我有一组类似于以下内容的视图/视图模型:
CustomDialogView
CustomView
CustomListView
CustomControl
-SomeCustomProperty
这些视图中的每一个都绑定到适当的视图模型。
我正在尝试将SomeCustomProperty绑定到CustomDialogView的视图模型上的属性。
最好的方法是什么?我尝试了一些东西,其中最有希望的似乎是通过RelativeSource FindAncestor设置这个属性的绑定,如:
<CustomControl
SomeCustomProperty="{
Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type sourcePath:CustomDialogViewModel}},
Path=SomeCustomProperty,
Mode=OneWay/>
</CustomControl>
但我完全没有约束力。
我不确定它是否有任何影响,但CustomListView由工厂填充。
答案 0 :(得分:3)
FindAncestor
发现View不是绑定的ViewModel。因此,您需要将视图类型设置为AncestorType
。现在,您可以通过将DataContext
添加到要绑定的Path
来访问此视图的ViewModel。
<CustomControl
SomeCustomProperty="{
Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type sourcePath:CustomDialogView}},
Path=DataContext.SomeCustomProperty,
Mode=OneWay/>
</CustomControl>