gpt4 book ai didi

c# - 在没有命令的情况下调用 ViewModel 中的方法

转载 作者:太空宇宙 更新时间:2023-11-03 19:05:47 25 4
gpt4 key购买 nike

我有以下场景:

public class MyCommand : ICommand
{
MyViewModel _viewModel;

public MyCommand(MyViewModel viewModel)
{
_viewModel = viewModel;
}

public bool CanExecute(object parameter)
{
return true;
}

public event EventHandler CanExecuteChanged;

public void Execute(object parameter)
{
_viewModel.SomeMethod();
}
}

本质上,当单击按钮时,此命令将简单地调用我的 ViewModel 中的方法。 CanExecute 始终返回 true。

问题是,尽管这通常被认为是最好的做事方式,但它并不是很优雅。这引出了一个问题,即为什么我需要一个命令来执行这个非常简单的过程。

为什么我不能直接跳过命令,直接调用方法呢?

我已经考虑过这个问题,我能看到实现这一点的唯一方法是创建一个命令,我可以在其中指定我想在 CommandParameter 我的按钮上的属性。

我希望其他人可以为这个问题提供一个优雅的解决方案。

最佳答案

您可以使用 CallMethodAction 中的“Blend SDK ”操作从您的 View 调用 View 模型上的方法。它看起来像这样:

<Button ...>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ei:CallMethodAction MethodName="MyMethod" TargetObject="{Binding}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>

然而,为此使用命令仍然被认为是最佳实践。正如 Ayyappan 提到的,您可以使用像 MVVM Light Toolkit 这样的库因此您不必编写自己的 ICommand 实现。

附言:另见 WPF: MVVM: Command vs CallMethodAction?

关于c# - 在没有命令的情况下调用 ViewModel 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27945561/

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