gpt4 book ai didi

c# - MVVM(WPF)中的命令——如何返回一个值?

转载 作者:太空狗 更新时间:2023-10-29 17:41:07 35 4
gpt4 key购买 nike

我使用 MVVM 模式已经有一段时间了,但在现实生活中我仍然遇到问题。这是另一个:我使用命令并冒泡要在 ViewModel 中处理的事件。到目前为止,一切都很好。但是我使用 MVVM 的项目实际上是一个类库。运行命令代码后,我需要能够将对象发送回调用应用程序。建议的方法是什么?

具体来说:在我的调用应用程序中,我有一个直接绑定(bind)到库的 ViewModel 的 XAML 页面,其中包含一个对象“Thing1”。单击按钮时,将调用 ViewModel 中的方法(将其称为“CopyThing1()”)。它复制“Thing1”以创建“Thing2”。然后我需要将“Thing2”发送回调用应用程序。

谢谢!!!

最佳答案

命令不返回值,它们会更改应用程序的状态。对于附加到 ViewModel 的 ICommand,这非常简单,因为您可以通过在执行命令时简单地改变 ViewModel 来做到这一点。

使用来自 Josh Smith's excellent MVVM article 的 RelayCommand :

public class MyViewModel : INotifyPropertyChanged
{
private readonly ICommand mutateCommand;
private Thing thing;

public MyViewModel()
{
this.mutateCommand = new RelayCommand(this.Mutate);
}

public ICommand MutateCommand
{
get { return this.mutateCommand; }
}

public Thing Thing
{
get { return this.thing; }
set
{
this.thing = value;
// raise PropertyChanged event here...
}
}

private void Mutate(object parameter)
{
this.Thing = new Thing();
}
}

调用 myVM.MutateCommand.Execute(new object()); 后,您可以访问 myVM.Thing 的新值。

关于c# - MVVM(WPF)中的命令——如何返回一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2240042/

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