我正在从事个人项目。我开始上一篇文章(Point of Sale Application Architecture)。
尝试使用 - 存储库 - 服务和查看模式 - 查看方法
请参阅随附的图像文件。我的大多数窗口都有多个视图。
我的问题是:
我越是考虑应用某些模式,我就越来越困惑
我相信你们中有些人有类似的问题,可能你的方法可能会为我解决问题。
谢谢 月
答案 0 :(得分:1)
我看不到你的截图,但我可以在这里给你一点方向。我最近一直在设置多目标(WPF / Silverlight)复合应用程序的shell,在我去的时候学习库。
“我的大多数窗口都有多个视图。” - 这本身可能意味着你会喜欢你在Composite Application Library中找到的东西。而MVVM是CAL的完美模式。在StockTrader参考应用程序中,他们使用术语PresentationModel,但这与MVVM基本相同。
Popup模式在WPF和SL中都很有效(通过Toolkit扩展ChildWindow控件)。您可以通过注入视图和服务以与常规区域相同的方式与他们进行通信。我发现特别简洁的是你可以在弹出窗口中定义一个区域,在加载app(模块)时注册视图(即使区域本身尚未加载),然后当区域弹出时在那时注入正确的视图。换句话说,在显示区域之前,您不必参与推迟视图的注入,这是我期望必须做的。
没试过这个 - 无法发表评论。
不确定“子视图”,但区域内的区域肯定是可能的。
答案 1 :(得分:1)
3)不共享相同视图模型的视图之间的通信是通过Prism中的EventAggregator完成的。这是一个非常容易使用的Publisher Subscriber模型的消息。你可以毫不费力地理解这一点。
4)我不喜欢将视图作为视图模型的属性。这是一个关注点分离的问题。你正在拍摄你的ViewModel与界面无关,这意味着太多的界面泄漏到你的视图模型中。 2个可接受的替代方案是