Dictionary到ListView TwoWay绑定 - 可能吗?
我正试图将一个字典绑定到一个ListView,它是一个带有2个文本框的网格的项目模板常量。理想情况下,我希望能够修改ListView中显示的KeyValuePair的键值和值。那可能吗?Dictionary到ListView TwoWay绑定 - 可能吗?
你要找的是什么东西类似于一个ObservableCollection<T>
但对于一个字典。谷歌搜索的位发现从Dr. WPF on building an ObservableDictionary
以下:
优点和缺点
使用当然可观察到的词典,好处是,该词典可以作为的ItemsSource用于数据绑定控件并您仍然可以像访问任何其他字典一样访问代码中的字典。它确实是一个对象的索引字典。 在使字典可观察的想法中固有一些固有的限制。字典是为了速度而建立的。当您在字典中强加可观察集合的行为以便框架可以绑定到它时,会增加开销。
此外,词典通过相同名称的单独的属性暴露其
Values
和Keys
集合。这些集合的类型分别为Dictionary<TKey, TValue>.ValueCollection
和Dictionary<TKey, TValue>.KeyCollection
。这些CLR定义的集合是不可观察的。因此,您无法直接绑定到Values集合或Keys集合,并期望收到动态集合更改通知。您必须直接绑定到可观察字典。现在
,您可以用更新的关键,因为你会需要以某种方式说服字典移动您的项目碰到的一个问题。我会建议服用WPF博士的ObservableDictionary
,而不是使用KeyedCollection
作为后备存储。这样Key就从Item自身派生出来,并且更新自动移动ObservableDictionary
中的对象。
如果你看KeyValuePair实现它是一个键和值为只读属性的结构,所以我的猜测是在这种情况下无法进行双向绑定。
如果你犯了一个类继承INotifyPropertyChange,处理字典添加和删除的项目,当您更改键或只有当你正在改变也许值它的工作原理更改值。
是的,但我不明白的方式来做到这一点没有intemedite类,就像一个视图模型。你直接绑定到字典是至关重要的吗? – angrifel 2009-12-03 22:47:23
这是首选。字典应该保存我的应用程序的设置等。 – Maciek 2009-12-03 22:59:38