Wpf:datatemplates和事件订阅管理

时间:2011-06-15 10:46:01

标签: wpf event-handling

有时会在调用方法时触发具有业务逻辑(DDD)的域模型对象。 在我的情况下,viewmodel(对于给定的视图)封装了域对象,需要注册并对这些域事件做出反应(我必须使用事件,因为相同的域对象可以由许多松散耦合的视图及其视图模型管理)。

我还需要在隐藏特定上下文时取消注册这些事件。 如果场景保持足够简单,我可以使用数据绑定,编程或其他任何方式与show / hide / dispose并行处理此寄存器/取消注册/ dispose ...

当可视化逻辑附带DataTemplates时,问题就出现了。 我如何知道该数据模板何时被隐藏,以便我可以取消注册我的事件?有没有更好的方法来使用wpf来处理这个问题,而不是添加更多的事件?

在一个好的MVVM方法中处理这种情况的最佳做法是什么?

编辑:好的,问题是结构性的。有时在项目内做出的选择迫使我们以非典型的方式工作......在一个好的mvvm方法中,这个问题不应该发生

1 个答案:

答案 0 :(得分:1)

我要小心使ViewModel依赖于View来使事情正确。

所以我要做的是在ViewModel上提供一个属性(Show?Visible?Open?),它与View具有TwoWay绑定,因此ViewModel可以监视属性。