我现在一直在使用MVVM模式,但在现实生活中我仍遇到问题.这是另一个:我使用命令和冒泡事件在ViewModel中处理.到现在为止还挺好.但是我使用MVVM的项目实际上是一个类库.一旦我运行命令代码,我需要能够将一个对象发送回调用应用程序.建议的方法是什么?
具体来说:在我的调用应用程序中,我有一个XAML页面直接绑定到库的ViewModel,它包含一个对象"Thing1".单击按钮时,将调用ViewModel中的方法(将其称为"CopyThing1()").它复制"Thing1"以创建"Thing2".然后我需要将"Thing2"发送回调用应用程序.
谢谢!!!
Mar*_*ann 10
命令不返回值,它们会更改应用程序的状态.如果ICommands附加到ViewModels,它非常简单,因为您可以通过在执行命令时改变ViewModel来实现这一点.
使用Josh Smith出色的MVVM文章中的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();
}
}
Run Code Online (Sandbox Code Playgroud)
打电话后,myVM.MutateCommand.Execute(new object());您可以访问新值myVM.Thing.
尽管关于 Commanding 的信息清晰且正确,但它无法应用于我的情况,因为需要发生的响应是在不使用 MVVM 的调用应用程序中发生的,并且它不仅仅是 UI 响应。我确实调查了 Prism,但发现它对于我目前的需要来说太复杂了。我最终引发并处理了事件,如此处所述--> WPF MVVM Correct Way to Fire Event on View From ViewModel
| 归档时间: |
|
| 查看次数: |
11464 次 |
| 最近记录: |