在XAML中设置WPF ContextMenu的PlacementTarget属性?

ken*_*ner 17 wpf xaml contextmenu button

<Button Name="btnFoo" Content="Foo" >
    <Button.ContextMenu Placement="Bottom" PlacementTarget="btnFoo">
        <MenuItem Header="Bar" />
    </Button.ContextMenu>
</Button>
Run Code Online (Sandbox Code Playgroud)

给我一个运行时错误'UIElement'类型没有公共TypeConverter类

我也试过了

<Button Name="btnFoo" Content="Foo" >
    <Button.ContextMenu Placement="Bottom" PlacementTarget="{Binding ElementName=btnFoo}">
        <MenuItem Header="Bar" />
    </Button.ContextMenu>
</Button>
Run Code Online (Sandbox Code Playgroud)

并将ContextMenu放在屏幕的左上角,而不是按钮

Tar*_*ier 25

您应该在按钮上设置ContextMenuService.Placement附加属性,如ContextMenu.Placement文档中的备注中所述.

<Button Name="btnFoo" Content="Foo" ContextMenuService.Placement="Bottom">
    <Button.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Bar" />
        </ContextMenu>
    </Button.ContextMenu>
</Button>
Run Code Online (Sandbox Code Playgroud)