我试图绑定到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窗体中的嵌套属性?
希望这能帮助