かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

WPF4.5入門 その30「Menuコントロール」

メニュー系コントロール地味だけど、ちゃんとしたアプリだと使うところですよね。ということで今日は普通のメニューコントロールです。

Menuコントロール

Menuコントロールは、Window上部などに表示されるメニュー項目です。一般的にファイル、編集などの項目などがあります。WPFのMenuコントロールを使うと以下のようなメニューを作成することが出来ます。

f:id:okazuki:20140812122318p:plain

基本的な使い方

Menuコントロールも通常のコントロールと同様に、画面の好きな位置にレイアウトできます。そのため一般的なメニューの位置である画面上部に表示するためには、Gridなどのレイアウトコントロールを使い画面の上部に表示されるように調整する必要があります。 画面の置き場所をレイアウトする以外は、基本的にContextMenuコントロールと同様の方法で使うことが出来ます。上記の例のような画面を表示するためのXAMLを以下に示します。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition />
    </Grid.RowDefinitions>
    <Menu>
        <MenuItem Header="ファイル(_F)" />
        <MenuItem Header="編集(_E)" />
        <MenuItem Header="オプション(_O)">
            <MenuItem IsCheckable="True" Header="オプション1" />
            <MenuItem IsCheckable="True" Header="オプション2" />
            <MenuItem IsCheckable="True" Header="オプション3" />
        </MenuItem>
    </Menu>
</Grid>

Gridコントロールを使用して、画面上部にMenuコントロールを配置しています。MenuコントロールではなくMenuItemコントロールの使い方になりますが、Headerプロパティに”_F”などのように記述すると、Altを押した後のキーボードショートカットを指定することが出来ます。 また、オプションメニューで示しているようにIsCheckableプロパティをtrueにすることで、チェック可能なメニュー項目を作成可能です。チェックの有無の確認はIsCheckedプロパティで指定可能です。

プロパティ 説明
public bool IsCheckable { get; set; } MenuItemがチェック可能かどうかを取得または設定します。Trueの場合に、チェック可能となります。
public bool IsChecked { get; set; } MenuItemがチェックされているかどうかを取得または設定します。チェックされている場合Trueになります。

過去記事