我有一个像这样的按钮的上下文菜单:
<Button x:Name="btnView" Tag="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type UserControl}},Path=DataContext}"
<Button.ContextMenu >
<ContextMenu x:Name="contextMenu"
DataContext="{Binding PlacementTarget.Tag,RelativeSource={RelativeSource Self}}" >
<MenuItem Header="View" Command="{Binding CommandObj.ViewCommand}"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
单击菜单项时未触发ViewCommand。当我检查放置目标是否为空。谁能告诉我我在这里做错了什么?
答案 0 :(得分:0)
为了使您的ViewCommand ICommand
能够正常运作,有关XAML的一些事情必须如此:
<Button x:Name="btnView" Tag="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type UserControl}},Path=DataContext}"
<Button.ContextMenu >
<ContextMenu x:Name="contextMenu" DataContext="{Binding PlacementTarget.Tag,
RelativeSource={RelativeSource Self}}">
<MenuItem Header="View" Command="{Binding CommandObj.ViewCommand}"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
UserControl.DataContext
属性。 CommandObj
的公共属性。 CommandObj
属性必须是类型为ICommand
的公共属性,其中包含ViewCommand
。 如果这些条件中的任何一个不正确,那么您的ICommand
将无效,您将需要满足这些条件。否则,您似乎正确地将DataContext
值正确传递到ContextMenu
。