Estoy empezando a usar commanding con MVVM en una aplicación. He encontrado varios ejemplos y lo he intentado de ambas maneras en mi código. Algunos ejemplos tienen el comando de unión en el xaml así:Encuadernación de comandos en XAML vs ICommand Propiedades en ViewModel
<CommandBinding Command="local:MainWindow.OpenRecentFile"
Executed="{Binding OpenRecentFile_Executed}" />
...
<MenuItem Header="{x:Static culture:TextResource.RecentFilesMenuItem}"
Command="local:MainWindow.RecentFilesCommand" >
Con OpenRecentFile_Executed siendo un método en el modelo de vista y un ICommand estáticas, así:
public static readonly ICommand OpenRecentFile =
new RoutedCommand("Open Recent", typeof(MainWindow));
También he visto donde hay una propiedad en el modelo de vista que es de tipo ICommand que está obligado a en la vista de este modo:
<MenuItem Header="Close Current File"
Command="{Binding CloseCurrentFileCommand}"
CommandParameter="{TemplateBinding DataContext}"/>
y en el modelo de vista:
private ICommand closeCurrentFileCommand;
public ICommand CloseCurrentFileCommand
{
get
{
if (closeCurrentFileCommand == null)
{
closeCurrentFileCommand =
new RelayCommand(param => this.CloseCurrentCedarFile(param));
}
return closeCurrentFileCommand;
}
}
¿Cuáles son los beneficios/inconvenientes para cada método?