0

我正在做一个个人项目。我从上一篇文章开始(销售点应用程序架构)。

尝试使用-存储库-服务和查看模式-查看方法

请参阅随附的图像文件。我的大多数窗户都会有多个视图。

我的问题是:

  1. 看着窗户,你认为我的项目是 CAG(棱镜)的一个很好的候选还是它是一个矫枉过正
  2. 我是否能够获得 POPUp 模态窗口并从其父视图区域模块与它们进行通信。
  3. Prism 中的多个窗口(假设我可以创建多个 shell),它们之间的通信是否复杂
  4. 在 SO 上阅读有关使用子视图作为属性创建复杂视图的信息。这是一个好方法还是代码太多

我越是考虑应用一些模式,我就越感到困惑

我相信你们中的一些人有类似的问题,可能你的方法可能会为我解决问题。

谢谢你,马尔

http://www.flickr.com/photos/themarworld/3820178039/ http://www.flickr.com/photos/themarworld/3820178039/

4

2 回答 2

1

我看不到你的截图,但我可以在这里给你一些指导。我最近一直在设置多目标(WPF/Silverlight)复合应用程序的外壳,边学习边学习库。

  1. “我的大部分窗户都有多个视图。” -- 这本身可能意味着您会喜欢您在复合应用程序库中找到的内容。MVVM 是 CAL 的完美模式。在 StockTrader 参考应用程序中,他们使用术语 PresentationModel,但这本质上与 MVVM 相同。

  2. 弹出模式在 WPF 和 SL 中都很好用(通过 Toolkit 扩展 ChildWindow 控件)。您将与他们以与常规区域相同的方式进行通信 - 通过注入视图和服务。我发现特别巧妙的是,您可以在弹出窗口中定义一个区域,在加载应用程序(模块)时向其注册视图(即使该区域本身尚未加载),然后当该区域弹出时此时注入正确的视图。换句话说,您不必参与推迟视图的注入,直到显示区域,这是我期望的。

  3. 没试过——不能评论。

  4. 不确定“子视图”,但区域内的区域肯定是可能的。

于 2009-08-15T16:21:33.050 回答
1

韦恩对#1 和#2 有很好的答案……我会得到#3 和#4。

3) 不共享相同视图模型的视图之间的通信是通过 Prism 中的 EventAggregator 完成的。这是一个非常易于使用的消息发布者订阅者模型。你不会有任何问题理解这一点。

4) 我不喜欢将视图作为视图模型的属性的想法。这是一个关注点分离的问题。您正在为您的 ViewModels 与接口无关,这意味着太多的接口泄漏到您的视图模型中。2个可接受的替代方案是

  • 子 ViewModels 作为 ViewModel 的属性。您可以使用 DataTemplates 为它们提供外观,而无需在 ViewModel 中指定 UI。
  • 子区域。这是完全可以接受的。有时它会根据您的 UI 变得棘手,因为您最终会尝试跟踪您的 RegionManager 范围,但它是可行的。

HTH,安德森

于 2009-08-18T03:53:11.193 回答