首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一容器视图模型通信

统一容器视图模型通信
EN

Stack Overflow用户
提问于 2012-07-29 05:40:41
回答 1查看 423关注 0票数 1

我所做的我有HomeViewModel和SellsViewModel。

在HomeViewModel中,我有属性"SellID“

在SellViewModel的构造函数中,我能够解析HomeViewModel的引用,并将其存储在SellViewModel中的m_objHomeViewModel变量中。

在SellViewModel的XAML中,我有一个显示"SellID“的文本框,这个文本框被绑定到"m_objHomeViewModel.SellID”。

当用户在上选择difference "Sell“时,我的SellViewModel会自动拿起它,并显示SellView中的变化。

问题

  1. 当SellView中的XAML文本框绑定到HomeViewModel中的属性时,更改将立即反映在UI上。
  2. 但是我无法在SellViewModel中捕获任何事件(如属性更改),捕捉到这样的事件,我希望从数据库中加载所选的"SellID“的其他值。
  3. 我不使用事件协议。如果使用,我可以很容易地订阅HomeViewModel发布的HomeViewModel中的事件。

Q1:如何在不使用事件协议器的情况下做到这一点?

Q2:如果在XAML中,TextBox被绑定到属性m_objHomeViewModel.SellID,它会产生内存泄漏吗?

Q3:如果在HomeViewModel中,我获得对SellViewModel的引用(使用container.resolve),并在修改HomeViewModel中的"SellID“属性时调用SellViewModel的公共属性或方法。这是一个很好的编程实践吗?在这里,我认为它将在HomeViewModel和SellViewModel之间建立紧密的耦合。

请建议一下..。

问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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)。但这是基于我能收集到的关于你的总体设计。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11706983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档