放置目标始终为空

本文关键字:目标 | 更新日期: 2023-09-27 18:08:14

我有一个按钮的上下文菜单,像这样:

<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。当我检查放置目标是空的。有人能告诉我我哪里做错了吗?

放置目标始终为空

为了使您的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>
  1. 您必须已经将对象的实例设置为UserControl.DataContext属性。
  2. 该对象必须在其中声明一个名为CommandObj的公共属性。
  3. CommandObj属性的类型必须包含一个名为ViewCommandICommand类型的公共属性。

如果这些条件中的任何一个不为真,那么您的ICommand将无法工作,您将需要满足这些条件。否则,似乎您正确地将DataContext值传递给ContextMenu