带有隐式DataTemplates的MVVM - 显式获取View

时间:2011-06-06 17:22:23

标签: mvvm mvvm-light silverlight-5.0

我正在使用Silverlight 5的隐式DataTemplate来连接ViewModel和View。

在我的MainView中有一个TabControl(来自Telerik),它绑定到MainViewModel的ObservableCollection。对于该Collection中所有可能的ViewModel类型,有一个DataTemplate定义了相应的View(= Tab)。

非常干净,完全脱离。

但现在我需要编写实际上只与视图相关的代码:我想手动将所选Tab的功能区合并到MainView的功能区。 ViewModel对相应的View没有任何了解,也不了解像Ribbon这样的UI元素(这是一件好事)。所以这是我需要编写代码隐藏的极少数情况之一。

我尝试了TabControl的SelectionChanged事件,但是所有属性(SelectedItem,SelectedValue,...)都指向ViewModel而不是View。

如何获取视图 - 使用DataTemplate由Silverlight 5连接?

感谢您的任何想法!

1 个答案:

答案 0 :(得分:0)

简短的回答,你没有。使用具有强类型约束的事件聚合器或信使类。

使用MVVM-Light的一个很好的实现是Messenger类,请参阅此文章以获取信息。

http://blog.galasoft.ch/archive/2009/09/27/mvvm-light-toolkit-messenger-v2-beta.aspx

无论如何,如果我理解你的话,你应该能够通过信使将标签发送给标签。