我有ListView
和Popup
内容(Buttons
,TextBoxes
等)根据ListView
中选择的内容动态变化。如果View
确定Popup
或ViewModel
应该做什么,这是否合法?我还想问一下,View
是否可以处理ViewModel
的事件?
答案 0 :(得分:1)
查看5: Implementing the MVVM Pattern以获取有关视图中有效内容的详细说明。它在这个答案中解释得比我在这里好多了。
我会尽快解答你的问题:
问:如果View确定弹出窗口中的内容或ViewModel应该执行什么操作,这是否合法? 答:视图应确定弹出窗口的显示方式,ViewModel应确定显示的内容。
问:View可以处理ViewModel的事件吗? 答:当然,这是DataBinding的一个关键部分 - 处理INotifyPropertyChanged事件。
答案 1 :(得分:1)
是不是因为你想编写独立于视图的测试?然后将您的逻辑状态放在视图模型中。
是否因为您希望能够在Blend中显示设计时数据?然后将您的逻辑状态放在视图模型中,并定义设计时间数据以在设计模式下显示。
是否因为您希望熟悉MVVM的人能够维护可维护的代码很长一段时间?将您的逻辑放在视图模型中。
是否因为您的应用程序很复杂而且您希望将关注点分开,以便不同的人可以在视图上工作,而不同的人会在视图模型上工作。将您的逻辑放在视图模型中。
如果这些都不适用 - 你可能会很好,花更少的时间试图通过将代码放在代码中来解决它,而不是让MVVM成为一个拖累。
如果您的问题是如何使用您的视图模型推送Popup
的内容 - 通常可以使用ItemsControls
的组合来实现这一点,例如ListView
,{{1}或者可能是自定义的GridView
和ContentControls
或ItemTemplateSelectors
,它们实现了根据视图模型状态确定要显示的视图的逻辑。
另请查看我的Minimalistic MVVM宣言帖。