0

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 に問題があると思います..

どんな助けでも大歓迎です。

4

1 に答える 1

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 の変更に関連しているようです: データ バインディングは Windows フォームでネストされたプロパティをサポートしますか?

それが役立つことを願っています

于 2016-01-01T16:20:03.677 に答える