我正在尝试绑定到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存在问题。
任何帮助都将不胜感激。
答案 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?
希望能有所帮助