我所做的我有HomeViewModel和SellsViewModel。
在HomeViewModel中,我有属性"SellID“
在SellViewModel的构造函数中,我能够解析HomeViewModel的引用,并将其存储在SellViewModel中的m_objHomeViewModel变量中。
在SellViewModel的XAML中,我有一个显示"SellID“的文本框,这个文本框被绑定到"m_objHomeViewModel.SellID”。
当用户在上选择difference "Sell“时,我的SellViewModel会自动拿起它,并显示SellView中的变化。
问题
Q1:如何在不使用事件协议器的情况下做到这一点?
Q2:如果在XAML中,TextBox被绑定到属性m_objHomeViewModel.SellID,它会产生内存泄漏吗?
Q3:如果在HomeViewModel中,我获得对SellViewModel的引用(使用container.resolve),并在修改HomeViewModel中的"SellID“属性时调用SellViewModel的公共属性或方法。这是一个很好的编程实践吗?在这里,我认为它将在HomeViewModel和SellViewModel之间建立紧密的耦合。
请建议一下..。
问候
发布于 2012-07-29 15:23:56
A1:如果我理解您的设计,您的SellVM将需要手动订阅HomeVM的PropertyChanged事件。如果您的SellId属性引发PropertyChanged,那么您的SellVM将看到这一点并相应地做出响应。
A2:如果没有看到整个应用程序,只需对属性进行数据绑定就不会导致内存泄漏。只要显示UI,HomeVM就会在内存中,但是.NET在识别不再需要它的时间和清理内存方面做得很好。这个问题的答案在很大程度上取决于您的总体设计,但是将SellID从HomeVM绑定到SellVM的简单操作本身不会导致内存泄漏。
A3:这听起来有点奇怪--不了解完整的体系结构,似乎SellID应该属于SellVM,当用户切换SellID时,HomeVM会用适当的SellID加载SellVM。这似乎更多的面向对象,并允许您分开关注。这样一切关于“卖出”(出售?)封装在SellVM中,HomeVM严格负责协调(加载正确的子VM)。但这是基于我能收集到的关于你的总体设计。
https://stackoverflow.com/questions/11706983
复制相似问题