当我从DataGridComboBoxColumn中选择一个项目时,我遇到了问题。在将焦点移动到下一个单元格后,单元格不会显示我选择的项目的名称。这是我的代码:
DataGridComboBoxColumn cb1 = new DataGridComboBoxColumn();
cb1.ItemsSource = listOStrings;
cb1.TextBinding = new Binding("listOfStrings");
e.Column = cb1;
e.Column.Header = "SomeTitle";
其中listOfStrings是用户正在更新的列表。我有另一个DataGridComboBoxColumn,它的ItemSource设置为一个没有更新的字符串列表。虽然两者的代码是相同的,但那个显示文本很好。我想知道为什么我的cb1组合框在离开单元格后不会显示值但是另一个组合框呢?
答案 0 :(得分:1)
我从来没有按照你的方式绑定 - 你考虑过将UI移动到XAML并数据绑定到ViewModel吗? Here是关于数据绑定组合的一个很好的分步示例。你只需要将组合框放在DataGrid中的一列 - 类似于this。
答案 1 :(得分:1)
当WPF中的绑定连接到非静态源时,底层源需要实现iNotifyPropertyChanged。在您的情况下,您可能希望使用ObservableCollection,如下所示:Why does a string INotifyPropertyChanged property update but not a List<string>?
在您的情况下,它看起来像:
private ObservableCollection<string> _listOStrings = new ObservableCollection<string>();
public ObservableCollection<string> ListOStrings
{
get
{
return _listOStrings;
}
set
{
_listOStrings = value;
OnPropertyChanged("ListOStrings");
}
}
有关MSDN中iNotifyPropertyChanged的详细信息,请参阅: 请参阅:https://msdn.microsoft.com/en-us/library/ms743695(v=vs.110).aspx