WPF MVVM - привязка к свойству из модели представления предка
У меня есть гнездо представлений / моделей, похожих на следующие:
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 заполняется фабрикой.
1 ответ
FindAncestor
находит View, а не связанную ViewModel. В связи с этим вам необходимо установить тип представления как AncestorType
, Теперь вы можете получить доступ к ViewModel этого представления, добавив DataContext
к Path
связывать.
<CustomControl
SomeCustomProperty="{
Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type sourcePath:CustomDialogView}},
Path=DataContext.SomeCustomProperty,
Mode=OneWay/>
</CustomControl>