DataGridComboBoxColumn 不会在结束编辑时在单元格中显示所选项目
DataGridComboBoxColumn wont display selected item in cell on ending edit
当我 select 来自 DataGridComboBoxColumn 的项目时遇到问题。在我将焦点移到下一个单元格后,该单元格不会显示我选择的项目的名称。这是我的代码:
DataGridComboBoxColumn cb1 = new DataGridComboBoxColumn();
cb1.ItemsSource = listOStrings;
cb1.TextBinding = new Binding("listOfStrings");
e.Column = cb1;
e.Column.Header = "SomeTitle";
其中 listOfStrings 是用户正在更新的列表。我有另一个 DataGridComboBoxColumn,其 ItemSource 设置为未更新的字符串列表。那个显示文本就好了,尽管两者的代码是相同的。我想知道为什么我的 cb1 组合框在离开单元格后不显示值,而另一个组合框显示值?
我从来没有按照您的方式完成绑定 - 您是否考虑过将 UI 移动到 XAML 并将数据绑定到 ViewModel? Here is an awesome step by step example on databinding comboboxes. You would just have the combobox be a column within the DataGrid also - similar to this.
当 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
当我 select 来自 DataGridComboBoxColumn 的项目时遇到问题。在我将焦点移到下一个单元格后,该单元格不会显示我选择的项目的名称。这是我的代码:
DataGridComboBoxColumn cb1 = new DataGridComboBoxColumn();
cb1.ItemsSource = listOStrings;
cb1.TextBinding = new Binding("listOfStrings");
e.Column = cb1;
e.Column.Header = "SomeTitle";
其中 listOfStrings 是用户正在更新的列表。我有另一个 DataGridComboBoxColumn,其 ItemSource 设置为未更新的字符串列表。那个显示文本就好了,尽管两者的代码是相同的。我想知道为什么我的 cb1 组合框在离开单元格后不显示值,而另一个组合框显示值?
我从来没有按照您的方式完成绑定 - 您是否考虑过将 UI 移动到 XAML 并将数据绑定到 ViewModel? Here is an awesome step by step example on databinding comboboxes. You would just have the combobox be a column within the DataGrid also - similar to this.
当 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