【发布时间】:2018-08-21 09:54:35
【问题描述】:
我有一个DataGrid和“MyNewEntry”类,并且这个类实现了INotifyPropertyChanged,所以字典中的每一次变化,也会影响datagrid中显示的值。
请参阅下面的代码。
Dictionary<string, MyNewEntry> dicForMyNewEntrys = new Dictionary<string, MyNewEntry>();
ObservableCollection<MyNewEntry> entryRowMyNewEntrys = new ObservableCollection<MyNewEntry>();
myDataGrid.ItemsSource = entryRowMyNewEntrys;
我想根据用户输入更新字典。
当用户添加新行时
当用户从数据网格中删除行时
当用户编辑一些数据网格单元时
对于 3 号,我可以捕捉到事件 CellEditEnding(可能有更好的方法来做到这一点),但对于其余的,我不知道如何以一种好的方式做到这一点。
【问题讨论】:
-
DataGrid 自动完成所有这些工作。只需将适当的元素(例如 DataGridTextColum)绑定到 MyNewEntry 类的属性。可能先阅读 DataGrid 教程。
-
我知道 ObservableCollection 将由 ui 更新。我想要做的也是更新字典。因为我的代码的某处正在使用字典,但字典没有用用户输入更新。
-
只需注册CollectionChanged 事件并从那里更新您的
Dictionary。