aif*_*rfa 2 c# silverlight prism mvvm
我有一个可以创建另一个ViewModel的ViewModel.
我想将此ViewModel设置为现有View的数据上下文,然后导航到该View.
private void CreateNewOrder()
{
var order = new OrderViewModel(new Order(){/* setup some things */});
// another ViewModel subscribes to MyCustomEvent
this.eventAggregator.GetEvent<MyCustomEvent>().publish(order);
this.regionManager.RequestNavigate("DetailRegion", new Uri("OrderView", UriKind.Relative));
}
Run Code Online (Sandbox Code Playgroud)
问题是 ...
这是紧耦合吗?
我花了一些时间查看Prism Quickstart项目并找到了"控制器"或太复杂的东西.
我只想简化解耦View-ViewModel.
您添加到ViewModel的代码属于控制器.
那么这张照片中缺少什么? - 控制器发布和侦听事件并从模型中获取ViewModel的数据.他们还控制导航.
它应该被设计为MVCVM.通过缺少控制器类,我看不到MVVM的误用.再给Prism Quickstart吧.
为了澄清控制器如何适应MVVM图片,下面是一个示例场景:
- 控制器由模块或app*注册和初始化.
- Controller订阅"显示详细信息"消息.
- 控制器收到"显示详细信息"消息.
- Controller构造一个"细节"VM,用数据填充它并将任何ICommand属性分配给控制器中的代码(例如,几乎所有app逻辑都在控制器中).
- 控制器触发显示适当的视图,为VM提供服务.
- 查看数据绑定到VM.按钮绑定到VM中的ICommands.
- 用户编辑数据并点击提交.提交代码位于Controller中,并决定如何处理VM中的新数据.
*注意:VM和视图不需要等待消息,因此在应用程序的生命周期中只需要存在控制器(即占用空间非常小).这对于移动应用来说非常棒,对于任何应用来说都是一件好事.
归档时间: |
|
查看次数: |
1343 次 |
最近记录: |