我正在提高我对MVVM /依赖注入的最佳实践的理解,而且看起来很重要的东西仍然很不清楚。
情境:
图表的组成部分(A1,B1等)具有状态。
组成部分的状态(A1.StateA1,B1.StateB1等)不仅仅作为图中其他对象的依赖关系,而且也需要出现在视图< / EM>
问题:
如果我的理解是正确的,那么该模型不应该满足任何形式的可视化 - 视图模型的责任是根据视图的要求格式化数据。
这是否意味着视图模型应该知道模型组合的细节,并直接参考例如B2.StateB2(甚至是A1.A2.B1.B2.StateB2)?
我正在尝试做的具体细节:
我正在设计的具体应用程序可作为业务应用程序(本地化软件)的简单扩展,以弥补在大型本地化项目中特别有用的一些缺失功能。我的应用程序的模型是从多个来源获取数据:
Process.HasExited
和AddAutomationFocusChangedEventHandler
来跟踪目标应用的流程和窗口状态。我承认该应用程序有点hacky,但最终用户生产力差异约为20%。 :)
主视图模型相当简单,只有少数控件,包括一个WebBrowser,我正在填充已组装和格式化的HTML数据。这里的关键点是让数据始终保持最新,但我的模型对象为此目的实现了INotifyPropertyChanged。
答案 0 :(得分:1)
或者,尝试将状态和行为分开并将所有状态存储在一个易于被视图模型使用的平面对象中是一种好习惯吗?
如果您指的是应用程序使用视图显示的状态,那么它应该被展平,或者更好地存储在ViewModel本身中。
模型在哪里获取数据?您可以将这些数据直接存储在ViewModel中,而不是创建一个仅用于在源和ViewModel之间保存数据的模型吗?
通常在MVVM开发中,IoC的Composition Root方法是使用ViewModel而不是模型完成的。