Home > C# > WPF > イベント > 方法:コマンドを有効にする

方法:コマンドを有効にする(WPF) MSDNのドキュメントの和訳

新規作成日 2019-11-15
最終更新日

原文:How to: Enable a Command

以下の例は、Windows Presentation Foundation (WPF)で、コマンドをどのように使用するかをデモンストレーションします。例は、RoutedCommandを実装する、CommandBindingを作成し、イベント・ハンドラを作成するButtonにRoutedCommandを、どのように、関連付けるかを示します。コマンディングの詳細については、「コマンドの概要」を参照してください。

Example

コードの最初のセクションは、ButtonとStackPanelから構成されている、ユーザー・インターフェイス(UI)を作成します。そして、コマンド・ハンドラをRoutedCommandと関連付けるCommandBindingを作成します。

ButtonのCommandプロパティは、Closeコマンドに関連付けられています。

CommandBindingは、ルートWindowのCommandBindingCollectionに追加されます。ExecutedとCanExecuteイベント・ハンドラは、結合に添付され、Closeコマンドと関連付けられます。

CommandBindingがなければ、コマンドを呼び出すメカニズムのみで、コマンド・ロジックがありません。Buttonが、クリックされるとき、PreviewExecuted RoutedEventが、コマンド・ターゲットで発生し、続いて、Executed RoutedEventが、発生します。これらのイベントは、その特定のコマンドのCommandBindingを探して要素ツリーを走査します。RoutedEventは、要素ツリーをトンネル、バブルするため、CommandBindingを配置する場所に、注意する必要があります。CommandBindingが、RoutedEventのルート上ではなく、コマンド・ターゲットや他のノードの兄弟の上にある場合、CommandBindingは、アクセスされません。

XAML
<Window x:Class="WCSamples.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="CloseCommand"
    Name="RootWindow"
    >
  <Window.CommandBindings>
    <CommandBinding Command="ApplicationCommands.Close"
                    Executed="CloseCommandHandler"
                    CanExecute="CanExecuteHandler"
                    />
  </Window.CommandBindings>
  <StackPanel Name="MainStackPanel">
    <Button Command="ApplicationCommands.Close" 
            Content="Close File" />
  </StackPanel>
</Window>
C#
// ui要素を作成します。
StackPanel CloseCmdStackPanel = new StackPanel();
Button CloseCmdButton = new Button();
CloseCmdStackPanel.Children.Add(CloseCmdButton);

// Buttonのプロパティを設定します。
CloseCmdButton.Content = "Close File";
CloseCmdButton.Command = ApplicationCommands.Close;

// CommandBindingを作成します。
CommandBinding CloseCommandBinding = new CommandBinding(
    ApplicationCommands.Close, CloseCommandHandler, CanExecuteHandler);

// CommandBindingをルートWindowに追加します。
RootWindow.CommandBindings.Add(CloseCommandBinding);

コードの次のセクションは、ExecutedとCanExecuteイベント・ハンドラを実装します。

Executedハンドラは、開いたファイルを閉じるために、メソッドを呼び出します。CanExecuteハンドラは、ファイルが開いているか判断するために、メソッドを呼び出します。ファイルが、開いている場合、CanExecuteが、trueに設定されています。;それ以外の場合には、falseに設定されています。

C#
// Executedイベント・ハンドラ。
private void CloseCommandHandler(object sender, ExecutedRoutedEventArgs e)
{
    // ファイルを閉じて、リソースを解放するために、メソッドを呼び出します。
    CloseFile();
}

// CanExecuteイベント・ハンドラ。
private void CanExecuteHandler(object sender, CanExecuteRoutedEventArgs e)
{
    // ファイルが開いているか、判断するために、メソッドを呼び出します。
    // ファイルが、開かれている場合、続いて、CanExecuteを、trueに設定します。
    if (IsFileOpened())
    {
        e.CanExecute = true;
    }
    // ファイルが、開かれていない場合、続いて、CanExecuteを、falseに設定します。
    else
    {
        e.CanExecute = false;
    }
}

こちらもご覧ください

See also

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」