相对源绑定未解析

bas*_*bas 2 c# wpf contextmenu relativesource

我在 TreeView 中有一个上下文菜单

UserControl (DataContext=ViewModel)
    |
    |
    ---- TreeView (ItemSource=MyItems)
           |
           |
           ----- Items (ItemSource=MyChildrenItems)
                   |
                   |
                   ----- ContextMenu
Run Code Online (Sandbox Code Playgroud)

我想将 ContextMenuItem 的命令绑定到 ViewModel 中的 RelayCommand,我尝试了各种relativesource 绑定,但似乎没有任何效果...

我应该如何配置RelativeSource 绑定?

<ContextMenu>
    <MenuItem
        Header="Bla"
        Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=TreeView}, Path=DataContext.MyRelayCommand}" />
Run Code Online (Sandbox Code Playgroud)

我收到类似的绑定错误

无法找到引用“RelativeSource FindAncestor,AncestorType='System.Windows.Controls.TreeView',AncestorLevel='1”的绑定源。BindingExpression:Path=DataContext.ExcludeSeasonCommand; 数据项=空;目标元素是“MenuItem”(名称=“”);目标属性是“Command”(类型“ICommand”)

bas*_*bas 6

最后,经过很多很多谷歌搜索我找到了解决方案

<MenuItem
    Header="Exclude season"
    Command="{Binding DataContext.MyRelayCommand, Source={x:Reference _myTreeView}}" />
Run Code Online (Sandbox Code Playgroud)

因为 HierarchicalDataTemplate 没有出现在可视化树中,所以没有“相对”源......

我希望这可以帮助其他正在拔头发的人......