[英]ComboBox.SelectedItem binding
我的DataGrid中有以下列/代碼:
<sdk:DataGridTemplateColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" Header="Province/State">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=SelectedProvince.ProvinceName, Mode=OneWay}"/>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
<sdk:DataG ridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Path=ProvinceList, Mode=TwoWay}"
SelectedItem="{Binding Path=SelectedProvince, Mode=TwoWay}"
DisplayMemberPath="ProvinceName" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellEditingTemplate>
</sdk:DataGridTemplateColumn>
然后這是背后的代碼(我已經剪掉了不相關的代碼):
public class BatchSeedingAddressVM : ViewModelBase
{
public BatchSeedingAddressVM()
{
_saveAddressButtonCommand = new RelayCommand(SaveAddressButtonCommand_OnExecute);
CreateJurisdictionList();
}
public BatchSeedingAddressVM(int? batchSeedingAddressOID, string address1, string address2, string city, string postalCode, string province2Code)
{
_saveAddressButtonCommand = new RelayCommand(SaveAddressButtonCommand_OnExecute);
CreateJurisdictionList();
BatchSeedingAddressOID = batchSeedingAddressOID;
Address1 = address1;
Address2 = address2;
City = city;
PostalCode = postalCode;
//SelectedProvince2Code = province2Code;
SelectedProvince = _provinceList.Where(x => x.Province2Code == province2Code).FirstOrDefault();
}
private ObservableCollection<Province> _provinceList = new ObservableCollection<Province>();
public ObservableCollection<Province> ProvinceList
{
get
{
return _provinceList;
}
set
{
if (_provinceList != value)
{
_provinceList = value;
RaisePropertyChanged("ProvinceList");
}
}
}
private Province _selectedProvince;
[Display(Name = "Province")]
public Province SelectedProvince
{
get
{
return _selectedProvince;
}
set
{
if (_selectedProvince != value && value != null)
{
_selectedProvince = value;
RaisePropertyChanged("SelectedProvince");
}
}
}
}
這是問題所在:DataGrid單元具有2個模板:CellTemplate和CellEditingTemplate。 當CellTemplate處於活動狀態時,其中的文本框將按計划選擇SelectedProvince,並顯示省名。 問題在於,當CellEditingTemplate變為活動狀態時,其中的ComboBox不會拾取(默認)SelectedItem值並顯示一個空框。
我有什么想念的嗎? 如何設置綁定,以便可以在CellEditingTemplate的組合框中設置默認的SelectedItem?
在此先感謝!
我認為用於ItemsSource的TwoWay綁定可能是問題。
ItemsSource="{Binding Path=ProvinceList, Mode=TwoWay}"
我建議根據您的設計將其更改為OneTime
或OneWay
。
我可能是錯的,但是我認為如果您使用的是SelectedValuePath
,則需要使用SelectedValue
而不是SelectedItem
,因此請更改以下內容:
SelectedItem="{Binding Path=SelectedProvince, Mode=TwoWay}"
對此:
SelectedValue="{Binding Path=SelectedProvince, Mode=TwoWay}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.