2017-10-08 10 views
0

私は次のようなビュー/ビューモデルの巣を持っているからプロパティにバインド:WPF MVVM - 祖先ビューモデル

CustomDialogView 
    CustomView 
    CustomListView 
     CustomControl 
     -SomeCustomProperty 

は、これらのビューのそれぞれが適切なビューモデルにバインドされています。

私はCustomDialogViewのビューモデルのプロパティにSomeCustomPropertyをバインドしようとしています。

これを行うにはどのような方法が最適ですか?

<CustomControl 
    SomeCustomProperty="{ 
     Binding RelativeSource={RelativeSource FindAncestor, 
     AncestorType={x:Type sourcePath:CustomDialogViewModel}}, 
     Path=SomeCustomProperty, 
     Mode=OneWay/> 
</CustomControl> 

しかし、私は全然ここに結合取得しています:私は次のようにRelativeSource FindAncestorを通じてこのプロパティの結合しないを設定しているように見え最も有望そのうちいくつかのことを、試してみました。

ベアリングがあるかどうかはわかりませんが、CustomListViewには工場が設定されています。

答えて

2

FindAncestorは、バインドされたViewModelではなく、ビューを検出しています。そのため、ビューのタイプをAncestorTypeと設定する必要があります。バインドするPathDataContextを追加することで、このビューのViewModelにアクセスできるようになりました。

<CustomControl 
    SomeCustomProperty="{ 
     Binding RelativeSource={RelativeSource FindAncestor, 
     AncestorType={x:Type sourcePath:CustomDialogView}}, 
     Path=DataContext.SomeCustomProperty, 
     Mode=OneWay/> 
</CustomControl> 
+0

優秀!ありがとうございました :) – amarsha4

関連する問題