0

CommandPattern と WPF の両方を使用するコードを取得する必要があります。たとえば、MVVM パターン コーディングを使用しています。そして、いくつかのカムマンド パターンを使用する必要があります。

"MenuItem Header="New" Horizo​​ntalAlignment="Left" Width="130" Command="{Binding Add}"" のように

私のコマンドはCommandPatternを使用して実装されています

4

1 に答える 1

4

コマンド パターンの実装は次のようになります...

        <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」など、コマンドパターンのより最近の実装が導入されましたが、これらは質問の範囲外です。

于 2013-08-21T11:30:50.830 に答える