CommandPattern と WPF の両方を使用するコードを取得する必要があります。たとえば、MVVM パターン コーディングを使用しています。そして、いくつかのカムマンド パターンを使用する必要があります。
"MenuItem Header="New" HorizontalAlignment="Left" Width="130" Command="{Binding Add}"" のように
私のコマンドはCommandPatternを使用して実装されています
CommandPattern と WPF の両方を使用するコードを取得する必要があります。たとえば、MVVM パターン コーディングを使用しています。そして、いくつかのカムマンド パターンを使用する必要があります。
"MenuItem Header="New" HorizontalAlignment="Left" Width="130" Command="{Binding Add}"" のように
私のコマンドはCommandPatternを使用して実装されています
コマンド パターンの実装は次のようになります...
<Menu DockPanel.Dock="Top">
<MenuItem Header="file" Command="{Binding FileCommand}"/>
</Menu>
...コマンドにバインドされたアイテムを宣言します。コマンドは、次のような宣言でビューモデルに存在します...
public ICommand FileCommand { get; set; }
... ICommand は System.Windows.Input 名前空間でインターフェイスとして宣言されています。http://msdn.microsoft.com/en-us/library/system.windows.input.icommand.aspx
ICommand を初期化するには...
FileCommand = new RelayCommand(FileCommandExecute, FileCommandCanExecute);
...ここで、「RelayCommand」は、Josh Smith の MVVM に関する重要な記事で説明されているクラスです。http://msdn.microsoft.com/en-us/magazine/dd419663.aspx Prism の「DelegateCommand」のように、他の実装が存在します。 '。コンストラクターの 2 つのデリゲートは、次のようにコーディングされています...
#region FileCommand callbacks
private bool FileCommandCanExecute(object obj)
{
return true;
}
private void FileCommandExecute(object obj)
{
OpenFile();
}
#endregion // end of FileCommand callbacks
...'CanExecute' メソッドは、View Model の状態に応じて、ユーザー サーフェスでコマンドを有効または無効にします。そして、'Execute' メソッドが実際の作業を実行します。
この例は、コマンド パターンの従来の MVVM 実装です。あなたの用語では、コマンドを実装するビュー モデルは「レシーバー」であり、メニューを含むビューは「呼び出し元」です。「CompositeCommand」や「Attached Behaviour」など、コマンドパターンのより最近の実装が導入されましたが、これらは質問の範囲外です。