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>
Другие вопросы по тегам