更新可观察集合基于组合框选择

时间:2010-10-20 04:53:24

标签: wpf valueconverter

所以我有一个名为“Class1”的项目的ObservableCollection Class1有一个名为“ID”的属性。

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

此时,一切都很好,一切都按照应有的方式填充。我想要做的是修改ObservableCollection以反映在ComboBox中选择的值。

我有一个ValueConverter绑定到ComboBox上的SelectedItemBinding,如下所示:

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

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

我可以创建一个类作为静态资源,带有指向我的集合的指针,并将其作为ConverterParameter传递,但这看起来很糟糕,我假设必须有一些更方便的方法来进行数据绑定。

1 个答案:

答案 0 :(得分:0)

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

警告:当您对集合进行更改然后失去焦点时,您很可能会遇到DeferRefresh异常。 这里有一个很好的解决方案: http://social.msdn.microsoft.com/Forums/en/wpf/thread/187b2b8f-d403-4bf3-97ad-7f93b4385cdf