2011-01-14 107 views
2

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

通常情况下,你会做一个双向绑定到viewmodel属性。 Bing地图将显示BoundingRectangle的图层,但不显示底图(我可以找到)。

我不想在这里找到黑客,只是想知道从视图中获取数据的最佳做法或惯例是不是“可绑定”的视图模型。

谢谢!

回答

3

数据绑定在Silverlight只是一个框架功能,如果你遵循了MVVM您的看法和您的视图模型之间的自动同步数据(模式)。但是,自己做这件事没有任何问题!

MVVM模式的(比大多数UI模式提供的关注通常的分离其他)的两个主要优点是:

  1. 它有助于单元测试,视图模型可以从你的单元测试代码行使没有看法存在。
  2. 它可以帮助开发人员/设计师工作流程,减少设计师和开发人员之间共享的文件。

根据我的经验,拥有少量的代码隐藏“辅助”绑定框架并不难!

您可以使用诸如附加行为之类的技术来包装此代码,但通常这只会导致整体改进。

+0

所以,你建议做类似的事情:使用类似事件聚合器和后面的代码将数据共享到需要的地方? – CraigF 2011-01-14 14:05:28

1

CraigF, 如果您使用Galasoft Light工具包,则可以使用中介模式,然后使用Messenger将视图发送到您的视图模型。视图模型注册到该消息,如果recive一个设置在视图模型的财产,并做一些逻辑..