DataGridComboBoxColumn在结束编辑

时间:2015-06-05 15:07:34

标签: c# wpf wpfdatagrid datagridcomboboxcolumn

当我从DataGridComboBoxColumn中选择一个项目时,我遇到了问题。在将焦点移动到下一个单元格后,单元格不会显示我选择的项目的名称。这是我的代码:

DataGridComboBoxColumn cb1 = new DataGridComboBoxColumn();
cb1.ItemsSource = listOStrings;
cb1.TextBinding = new Binding("listOfStrings");
e.Column = cb1;
e.Column.Header = "SomeTitle";

其中listOfStrings是用户正在更新的列表。我有另一个DataGridComboBoxColumn,它的ItemSource设置为一个没有更新的字符串列表。虽然两者的代码是相同的,但那个显示文本很好。我想知道为什么我的cb1组合框在离开单元格后不会显示值但是另一个组合框呢?

2 个答案:

答案 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