ComboBoxColumnを使用して、データテーブルにバインドされたデータグリッドがあります。この列のXAMLは次のとおりです。
<DataGridComboBoxColumn Header="Rep Name" SortMemberPath="RepName"
ItemsSource="{Binding UpdateSourceTrigger=PropertyChanged, Source={StaticResource EmployeeList}, Path=Employees}"
SelectedValueBinding="{Binding Mode=TwoWay, Path=EmpId}"
SelectedValuePath="EmpId" DisplayMemberPath="RepName" />
私の従業員クラス:
public class EmployeeList : INotifyPropertyChanged
{
private ObservableCollection<Employee> _employees = new ObservableCollection<Employee>();
public EmployeeList()
{
...
}
public ObservableCollection<Employee> Employees
{
get { return _employees; }
set { _employees = value; NotifyPropertyChanged("Employees"); }
}
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
public class Employee : INotifyPropertyChanged
{
private int _id;
public int EmpId
{
get { return _id; }
set { _id = value; OnPropertyChanged("EmpId"); }
}
public string RepName { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this,
new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
グリッドのアイテムソースとして機能するDataTableには、「EmpId」列と「RepName」列が含まれています。コンボボックスにはすべての従業員が入力されており、選択すると、データテーブルに反映されます。ただし、画面が読み込まれると、現在割り当てられている従業員はデフォルトでコンボボックスで選択されません。コンボボックスのSelectedValueBindingプロパティがこれを処理すると思いました...何が間違っているのですか?
明確化のため
の更新:データグリッドは、EmployeeID列を含むデータテーブルにバインドされています。画面が読み込まれるときに、テーブルにEmployeeID 1、2、3の3つの行があると仮定します。最初の行のコンボボックス列でEmployeeID 1を選択し、2番目の行でEmployeeID2を選択する必要があります。 EmployeeID3が選択されている3行目。