【问题标题】:DataGridComboBoxColumn wont display selected item in cell on ending editDataGridComboBoxColumn 在结束编辑时不会在单元格中显示所选项目
【发布时间】:2015-08-20 14:29:50
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# wpf wpfdatagrid datagridcomboboxcolumn


    【解决方案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

    【讨论】:

    • 感谢您的回答,在阅读了您发布的 Microsoft 链接后,我能够让它像魅力一样工作。
    【解决方案2】:

    我从未按照您的方式完成绑定 - 您是否考虑过将 UI 移至 XAML 并将数据绑定移至 ViewModel? Here 是关于数据绑定组合框的一个很棒的逐步示例。您也可以让组合框成为 DataGrid 中的一列 - 类似于 this

    【讨论】:

    • 我没有使用 XAML,因为我对它有点陌生。尽管您发布的分步指南帮助我解决了我遇到的另一个问题,但这是一个巨大的帮助。谢谢你的回答。
    • 没问题 - 很高兴我能帮上忙!另外,如果您想深入了解 XAML,我真的很喜欢 these 视频。从 1 开始,一路向上。祝你好运!
    猜你喜欢
    • 2011-09-24
    • 2023-03-14
    • 2017-01-16
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 2016-12-25
    相关资源
    最近更新 更多