从MVVM中的视图获取数据?

时间:2011-01-14 13:35:48

标签: silverlight mvvm prism

我有一个silverlight bing地图应用程序。我正在使用带有PRISM的MVVM模式。 bing映射具有“BoundingRectangle”属性,该属性在XAML中不可用,但可通过后面的代码获得。当然这对我没有好处,因为我需要我的viewmodel中的数据,后者无法访问View的代码(我也不想添加它,因为我真的想尝试不使用后面的视图代码如果可能的话。)

通常,您可以双向绑定到viewmodel属性。 Bing地图将为图层显示BoundingRectangle,但不会显示基本地图(我可以找到)。

我不是在寻找黑客,只是想知道将视图中的数据从视图模型中获取的最佳实践或约定是不是“可绑定”的。

谢谢!

2 个答案:

答案 0 :(得分:3)

Silverlight中的数据绑定只是一个框架功能,可以自动同步视图和视图模型之间的数据(如果您遵循MVVM模式)。但是,自己做这件事并没有错!

MVVM模式的两个主要优点(除了大多数UI模式提供的常见问题分离之外)是:

  1. 它有助于单元测试,View模型可以从您的单元测试代码中运行,而不会显示视图。
  2. 它有助于开发人员/设计人员工作流程,减少设计人员和开发人员之间共享的文件。
  3. 根据我的经验,拥有少量代码隐藏“辅助”绑定框架并不难!

    您可以使用附加行为等技术来包装此代码,但这通常会导致外观改进。

答案 1 :(得分:1)

CraigF, 您可以使用Mediator模式,如果您使用Galasoft Light工具包,则使用messenger将消息从视图发送到您的viewmodel。 Viewmodel注册到该消息,如果recive在viewmodel中设置你的属性并做一些逻辑..