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