在CollectionViewSource上绑定 - >查看 - >群组 - >伯爵(代码与XAML)

时间:2016-01-01 06:17:25

标签: binding dependency-properties dependencyobject

我正在尝试绑定到CollectionViewSource嵌套属性(CVS.View.Groups.Count),它似乎不适用于代码:

Binding binding = new Binding();
binding.Path = new PropertyPath("View.Groups.Count");
binding.Mode = BindingMode.OneWay;
binding.Source = CVS;
BindingOperations.SetBinding(this, ValueProperty, binding);

但它在WPF / xaml中运行良好。

<DataTrigger Binding="{Binding Path=CVS.View.Groups.Count, Mode=OneWay}" Value="1">

所以我想知道这两种方法和代码方式绑定中的错误有什么区别。同时这种代码在非嵌套属性上运行良好,当它是依赖对象中的简单依赖属性时,所以我认为提供的PropertyPath存在问题。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我通过更改绑定源成功解决了问题。我没有直接传递依赖项对象,而是使用依赖项对象创建了一个Windows.Forms.BindingSource,并将此对象设置为绑定源。通过这种方式,绑定现在运行良好。

Binding binding = new Binding();
binding.Path = new PropertyPath("View.Groups.Count");
binding.Mode = BindingMode.OneWay;

System.Windows.Forms.BindingSource bs = new System.Windows.Forms.BindingSource(DevicesInAlarmCVS, null);
binding.Source = bs;

BindingOperations.SetBinding(this, ValueProperty, binding);

它似乎与.NET framework 4.0的变化有关: Does data binding support nested properties in Windows Forms?

希望能有所帮助