Найти модели представления DataContext в шаблоне данных - PullRequest
0 голосов
/ 24 июня 2019

У меня есть ContentControl с ContentTemplateSelector, как это

<Border>
    <ContentControl Content="{Binding MyObject}" ContentTemplateSelector="{Binding MyContentTemplateSelector"}/>
</Border>

В моем DataTemplate я хочу получить доступ к ICommand, определенному в графе DataContext(ViewModel)

Я пробовал режим FindAncestor, но подозреваю, что он работает только в DataTemplate, а не в целом VisualTree.Это код XAML, который находится в DataTemplate:

<i:InvokeCommandAction Command="{Binding Path=DataContext.MyCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Border,AncestorLevel=2}}" 
                                                                        CommandParameter="{Binding }" />

Есть предложения о том, как я могу связать эту команду с DataContext моего ViewModel?Спасибо!

1 Ответ

2 голосов
/ 24 июня 2019

В вашем ContentControl вы можете добавить это свойство:

Tag="{Binding DataContext, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"

Затем в вашем InvokeCommandAction вы связываете свойство тега:

Command="{Binding Tag.MyCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContentControl}}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...