1

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

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

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

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

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

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

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

4

1 回答 1

0

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

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

于 2010-10-26T05:08:55.390 回答