我剛開始在應用程序中使用MVVM命令。我找到了很多示例,並在我的代碼中嘗試了兩種方法。一些實例有命令在XAML綁定像這樣:XAML中的命令綁定與ViewModel中的ICommand屬性
<CommandBinding Command="local:MainWindow.OpenRecentFile"
Executed="{Binding OpenRecentFile_Executed}" />
...
<MenuItem Header="{x:Static culture:TextResource.RecentFilesMenuItem}"
Command="local:MainWindow.RecentFilesCommand" >
隨着OpenRecentFile_Executed是在視圖模型的方法和靜態的ICommand像這樣:
public static readonly ICommand OpenRecentFile =
new RoutedCommand("Open Recent", typeof(MainWindow));
我還看到,其中有一個屬性上是類型的ICommand綁定到View像這樣的視圖模型:
<MenuItem Header="Close Current File"
Command="{Binding CloseCurrentFileCommand}"
CommandParameter="{TemplateBinding DataContext}"/>
,並在視圖模型:
private ICommand closeCurrentFileCommand;
public ICommand CloseCurrentFileCommand
{
get
{
if (closeCurrentFileCommand == null)
{
closeCurrentFileCommand =
new RelayCommand(param => this.CloseCurrentCedarFile(param));
}
return closeCurrentFileCommand;
}
}
每種方法的優點/缺點是什麼?