メニューを表示する

スポンサーリンク

ツールバーにはボタンやコンボボックスといったコントロール以外にも、メニューを表示させることができます。

メニューを表示させるにはMenuクラスを使用します。Menuについて、詳しくはこちらを参照ください。

下記はツールバーにメニューを表示する例です。

メニューを表示する例

 

XAMLの例

<Window.CommandBindings>
    <!-- [ファイル]-[新規作成]用コマンド -->
    <CommandBinding Command="New" Executed="FileNewExecute" />
    <!-- [ファイル]-[保存]用コマンド -->
    <CommandBinding Command="SaveAs" Executed="FileSaveExecute" CanExecute="FileSaveCanExecute" />
</Window.CommandBindings>
<DockPanel Name="DocPanel1">
    <ToolBarTray Name="ToolBarTray1" DockPanel.Dock="Top">
        <ToolBar Name="ToolBar1" Band="1">
            <Menu>
                <MenuItem Header="ファイル(_F)">
                    <MenuItem Command="New" />
                    <MenuItem Command="SaveAs" />
                    <MenuItem Command="Save" />
                    <Separator />
                    <MenuItem Command="Close" />
                </MenuItem>
                <MenuItem Header="編集(_E)">
                    <MenuItem Command="Cut" />
                    <MenuItem Command="Copy" />
                    <MenuItem Command="Paste" />
                </MenuItem>
            </Menu>
        </ToolBar>
        <ToolBar DockPanel.Dock="Top" Band="2">
            <Button Command="New">
                <Image Source="Images/NewDocument.png" Width="16" Height="16" />
            </Button>
            <Button Command="Save">
                <Image Source="Images/Save.png" Width="16" Height="16" />
            </Button>
            <TextBlock VerticalAlignment="Center">フォントサイズ</TextBlock>
            <ComboBox Width="50">
                <ComboBoxItem IsSelected="True">10pt</ComboBoxItem>
                <ComboBoxItem>11pt</ComboBoxItem>
                <ComboBoxItem>12pt</ComboBoxItem>
            </ComboBox>
            <Button>
                <Image Source="Images/boldhs.png" Width="16" Height="16" />
            </Button>
            <Button>
                <Image Source="Images/Italichs.png" Width="16" Height="16" />
            </Button>
        </ToolBar>
    </ToolBarTray>
    <TextBox Name="TextBox1"></TextBox>
</DockPanel>

VBの例

'コマンドに対するイベントコードの例

'TextBoxの内容に変更があったかどうかを示すフラグ
'内容に変更があった場合にTrueとする
Private IsModified As Boolean = False

' [ファイル]-[新規作成]に対するコマンド
Private Sub FileNewExecute(ByVal sender As System.Object, ByVal e As System.Windows.Input.ExecutedRoutedEventArgs)
    MessageBox.Show("New")
End Sub

' [ファイル]-[保存]に対するコマンド
Private Sub FileSaveExecute(ByVal sender As System.Object, ByVal e As System.Windows.Input.ExecutedRoutedEventArgs)
    MessageBox.Show("Save")
End Sub

' [ファイル]-[保存]の実行可否を決定する
Private Sub FileSaveCanExecute(ByVal sender As System.Object, ByVal e As System.Windows.Input.CanExecuteRoutedEventArgs)
    'TextBoxの内容に変更があった場合
    If IsModified Then
        '[ファイル]-[保存]の実行を許可する
        e.CanExecute = True
    End If
End Sub

' テキストボックスの内容に変更があった場合の処理
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.Windows.Controls.TextChangedEventArgs) Handles TextBox1.TextChanged
    '内容が変更されたことを示すためフラグをTrueにする
    IsModified = True
End Sub

C#の例

// コマンドに対するイベントコードの例

// TextBoxの内容に変更があったかどうかを示すフラグ
// 内容に変更があった場合にTrueとする
private bool IsModified = false;

// [ファイル]-[新規作成]に対するコマンド
private void FileNewExecute(object sender, ExecutedRoutedEventArgs e)
{
    MessageBox.Show("New");
}

// [ファイル]-[保存]に対するコマンド
private void FileSaveExecute(object sender, ExecutedRoutedEventArgs e)
{
    MessageBox.Show("Save");
}

// [ファイル]-[保存]の実行可否を決定する
private void FileSaveCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
    // TextBoxの内容に変更があった場合
    if (IsModified)
    {
        // [ファイル]-[保存]の実行を許可する
        e.CanExecute = true;
    }
}

// テキストボックスの内容に変更があった場合の処理
private void TextBox1_TextChanged(object sender, TextChangedEventArgs e)
{
    // 内容が変更されたことを示すためフラグをTrueにする
    IsModified = true;
}
タイトルとURLをコピーしました