我有一个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 }" />
关于如何将此命令绑定到ViewModel的DataContext的任何建议?谢谢!
答案 0 :(得分:2)
在ContentControl中,您可以添加此属性:
Tag="{Binding DataContext, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"
然后在InvokeCommandAction中绑定到tag属性:
Command="{Binding Tag.MyCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContentControl}}"