集合视图源 -> 视图 -> 组 ->计数(代码与 XAML)上的绑定



我试图绑定到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存在问题。。

如有任何帮助,我们将不胜感激。

我通过更改绑定源成功地解决了这个问题。我没有直接传递依赖对象,而是创建了一个带有依赖对象的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的变化有关:数据绑定是否支持Windows窗体中的嵌套属性?

希望这能帮助

最新更新