ComboBoxColumn을 사용하여 데이터 테이블에 바인딩 된 DataGrid가 있습니다. 다음과 같이 컬럼의 XAML은 다음과 같습니다WPF DataGrid의 ComboBox 열과 ItemsSource로 DataTable
<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 속성이 처리 할 줄 알았는데 ... 내가 뭘 잘못하고있어? 해명
업데이트 :
데이터 격자가 직원 ID 열을 포함하는 데이터 테이블에 결합된다. 화면이로드 될 때 EmployeeID 1, 2 및 3이있는 테이블에 3 개의 행이 있다고 가정 해 봅시다. 첫 번째 행에 콤보 상자 열이 있어야 EmployeeID 1이 선택되고 두 번째 행에는 EmployeeID 2가 선택되고 세 번째 행에 EmployeeID 3이 선택되었습니다.
궁금한 점은 실행시 출력 창에 데이터 바인딩 오류가 있습니까? –
데이터 바인딩 오류가 없습니다 – drowned