gpt4 book ai didi

c# - 可以在 View 中显示 RelayCommand 吗?

转载 作者:行者123 更新时间:2023-12-03 10:43:47 25 4
gpt4 key购买 nike

过去几年我一直在 WPF 中工作,但还没有从头开始完成我的任何项目。现在,我有机会这样做了。

在进入项目之前,我已经开始建立一些基础。我为 view 创建了一个单独的 WPF 项目ViewModel 的类库

我一开始就被打动了,我有一个计划 RelayCommandViewModel作为接口(interface)来委托(delegate) View 的操作至Viewmodel .

我的问题是,我是否有权拥有 RelayCommandViewModel ?

我预计它应该在 ViewModel但是 RelayCommand 中的以下代码

public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
CommandManager必填 PresentationCore这是 WPF 特定的程序集。我不想在我的 ViewModel 中添加它.

我是否需要 RelayCommand在我的 View ?

最佳答案

将 RelayCommand 放在 ViewModel 中绝对是正确的。这使它可用于测试等目的!

您应该删除 CanExecuteChanged 中的代码并在您的 RelayCommand 上公开一个方法执行:

/// <summary>
/// Call this when the CanExecute of the command has changed, this allows things like UI to update.
/// </summary>
public void ExecuteChanged()
{
CanExecuteChanged?.Invoke( this, EventArgs.Empty );
}

然后,只要 CanExecute boolean 已根据您的命令更改。

当然,如果您没有特殊的方法来确定您的命令是否可以执行,您可以调用 ExecuteChanged()来自您的 CanExecute属性 setter 。

关于c# - 可以在 View 中显示 RelayCommand 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37879638/

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