を結合:ComboBox.SelectedItemは私が私の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内のComboBoxが(デフォルトの)SelectedItem値を取得せず、空のボックスを表示することです。
紛失しているものがありますか? CellEditingTemplateのコンボボックスにデフォルトのSelectedItemを設定することができるようにバインディングを設定する方法は?
ありがとうございます!
私はSelectedValuePath = "Province2Code"という行を削除して、誰にも混乱させないようにしました。 – Andrei
+1 ItemsSourceのモードをOneWayに設定する - 修正しました! =))ありがとう! あなたはそれを答えにするべきだと思います。 – Andrei