gpt4 book ai didi

c# - XAML 中的命令绑定(bind)与 ViewModel 中的 ICommand 属性

转载 作者:可可西里 更新时间:2023-11-01 08:42:40 27 4
gpt4 key购买 nike

我刚刚开始在应用程序中使用 MVVM 命令。我找到了许多示例,并在我的代码中尝试了两种方法。一些示例在 xaml 中具有命令绑定(bind),如下所示:

<CommandBinding Command="local:MainWindow.OpenRecentFile" 
Executed="{Binding OpenRecentFile_Executed}" />
...
<MenuItem Header="{x:Static culture:TextResource.RecentFilesMenuItem}"
Command="local:MainWindow.RecentFilesCommand" >

OpenRecentFile_Executed 是 ViewModel 中的一个方法和一个静态 ICommand,如下所示:

 public static readonly ICommand OpenRecentFile = 
new RoutedCommand("Open Recent", typeof(MainWindow));

我还看到 ViewModel 上有一个 ICommand 类型的属性在 View 中绑定(bind)到,如下所示:

<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;
}
}

每种方法的优点/缺点是什么?

最佳答案

这取决于您的设计。如果您正在寻求快速方法 - 一个带有后端代码的窗口,那么从长远来看,在 XAML 中声明命令可能会为您节省一些时间并减少工作量。

如果您要使用 MVVM 应用程序,那么我强烈建议绑定(bind)到 ICommand,因为命令通常是操作数据(打开/保存/编辑)的方法,这应该在 ViewModel 中定义。可能需要更多的努力取决于功能,但如果您正在做一个更大的应用程序,MVVM 是一个很好的方法。

最终两者的效果相同,但重要的是您的设计和方法。

关于c# - XAML 中的命令绑定(bind)与 ViewModel 中的 ICommand 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6584805/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com