RunningCSharp

MS系開発者による、雑多な記事。記事は所属企業とは関係のない、個人の見解です。

WPF:コントロールの脇にContextMenuを表示する

コントロールに沿う感じでコンテキストメニューを表示しようとしたところ、少しはまってしまった為メモ。

f:id:ys-soniclab:20160604152217p:plain

図のように、ボタンに沿う形でコンテキストメニューを出したかった。 コードは下記のとおり。

<Window x:Class="WpfApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button ContextMenuService.Placement="Left"
            HorizontalAlignment="Center" VerticalAlignment="Center" Content="test">
            <Button.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="test1" />
                    <MenuItem Header="test2" />
                    <MenuItem Header="test3" />
                </ContextMenu>
            </Button.ContextMenu>
        </Button>
    </Grid>
</Window>

上記のように、コンテキストメニューの表示元コントロールにContextMenuService.Placementプロパティを指定する。