アプリケーションでMVVMでコマンドを使用し始めたところです。私はいくつかの例を見つけ、自分のコードで両方の方法で試しました。 OpenRecentFile_ExecutedはViewModelに方法及びそのような静的なのICommandされた状態でXAMLでのコマンドバインディングとViewModelでのICommandプロパティの比較
<CommandBinding Command="local:MainWindow.OpenRecentFile"
Executed="{Binding OpenRecentFile_Executed}" />
...
<MenuItem Header="{x:Static culture:TextResource.RecentFilesMenuItem}"
Command="local:MainWindow.RecentFilesCommand" >
:いくつかの例はそうのようなXAMLでバインディングのコマンドを持って
public static readonly ICommand OpenRecentFile =
new RoutedCommand("Open Recent", typeof(MainWindow));
プロパティがある場合、私も見てきましたそのようなビューにバインドされているタイプのICommandであるのViewModel上:
<MenuItem Header="Close Current File"
Command="{Binding CloseCurrentFileCommand}"
CommandParameter="{TemplateBinding DataContext}"/>
とのViewModelで:
private ICommand closeCurrentFileCommand;
public ICommand CloseCurrentFileCommand
{
get
{
if (closeCurrentFileCommand == null)
{
closeCurrentFileCommand =
new RelayCommand(param => this.CloseCurrentCedarFile(param));
}
return closeCurrentFileCommand;
}
}
各方法の利点/欠点は何ですか?