更新基于组合框选择的Observable集合

问题描述:

因此,我有一个名为“Class1”的项的ObservableCollection,而 Class1有一个名为“ID”的属性。更新基于组合框选择的Observable集合

我使用WPFToolkit中的datagrid并绑定到这个集合。 在datagrid中是一个组合框列,我将它的ItemsSource绑定到该类的ID属性。

在这一点上,一切都很好,一切都应该填充。我想要做的是修改ObservableCollection以反映在ComboBox中选择的值。

我已绑定到SelectedItemBinding的组合框一个ValueConverter如下:

SelectedItemBinding="{Binding Path=ID, Converter={StaticResource IDConverter}} 

什么是最好的(即:WPF批准的方法)修改集合的?调用IDConverter ConvertBack()方法时,我得到相应的Class1实例,但无法从ValueConverter访问Observable集合,也无法访问Datagrid中的SelectedIndex值。

我可以用指向我的集合的指针创建一个类作为静态资源,并将其作为一个ConverterParameter传递,但这似乎有点怪诞,我假设必须有一些使用数据绑定来实现这一点的更清晰的方法。

+0

所以是当您修改ID,它不反映在数据网格中的问题?或者当您修改数据网格中的值时,它并不反映在其他地方 – TerrorAustralis 2010-10-26 05:13:36

为了记录,一个简单的解决方案是创建一个本地资源,并引用您希望修改为依赖项属性的集合。然后,您可以将其作为ConverterParameter传递并通过ConvertBack()接口方法访问它。

需要注意的是:当您对集合进行更改并且失去焦点时,很可能会遇到DeferRefresh异常。 一个很好的修复发现在这里: http://social.msdn.microsoft.com/Forums/en/wpf/thread/187b2b8f-d403-4bf3-97ad-7f93b4385cdf