开发者

MVVM with Implicit DataTemplates - getting the View explicitly

开发者 https://www.devze.com 2023-03-11 06:24 出处:网络
I am using implicit DataTemplates of Silverlight 5 to wire ViewModel and View. In my MainView there is a TabControl (from Telerik) which is bound to an ObservableCollection of the MainViewModel. And

I am using implicit DataTemplates of Silverlight 5 to wire ViewModel and View.

In my MainView there is a TabControl (from Telerik) which is bound to an ObservableCollection of the MainViewModel. And for all possible ViewModel-types within that Collection there is a DataTemplate which defines the corresponding View (=Tab).

Very clean and totally decoupled.

But now I need to write code that's really only related to the Views: I want to manually merge a Ribbon of the selected Tab开发者_JS百科 to the Ribbon of the MainView. The ViewModels don't have any knowledge of their corresponding View and do not know anything about a UI Element like a Ribbon (which is a good thing). So this is one of the very rare occasions where I need to write code-behind.

I tried the SelectionChanged Event of the TabControl, but all properties (SelectedItem, SelectedValue, ...) point to the ViewModel and not to the View.

How do I get the View - which was wired by Silverlight 5 using a DataTemplate??

Thanks for any ideas!


Short answer, you don't. Use an event aggregator or a messenger class with strongly typed constraints.

One good implementation with MVVM-Light is the Messenger class, see this article for info.

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

Anyhow you should be able to have the ribbon message the tab via messengers if i'm understanding you right.

0

精彩评论

暂无评论...
验证码 换一张
取 消