Преобразование Silverlight MVVM из WPF

Я читал эту статью - http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

И я наткнулся на этот фрагмент кода в демонстрационном приложении WPF, прилагаемом к статье.

Этот шаблон применяет CustomerView к экземпляру класса CustomerViewModel, показанному в главном окне.

<DataTemplate DataType="{x:Type vm:CustomerViewModel}">  
    <vw:CustomerView />  
</DataTemplate>

Я заменил квадратные скобки угловыми скобками - не знаю, как их разместить.

Код находится в MainWindowResourses.xaml и начинается со строки 19.

Кто-нибудь знает, как я могу это сделать в Silverlight ?? У нас нет DataType, и мне нужно иметь возможность сообщить приложению, что этот View связан с этой ViewModel, поэтому я могу создать элемент управления вкладкой с другим представлением, как в демонстрационном приложении.

Ваше здоровье,

EC


person Eoinii    schedule 13.05.2010    source источник
comment
Я только что отредактировал для вас блок кода - можете ли вы проверить, что он задумал? Ваше здоровье.   -  person slugster    schedule 13.05.2010
comment
Ага, дело в этом :) Думаю, что я обнаружил проблему. Я использую набор инструментов MVVM Light - но я не использую часть приложения Locator - я думаю, что локатор делает то, что мне нужно - нужно прочитать об этом :) Спасибо   -  person Eoinii    schedule 13.05.2010
comment
Я отметил вопрос mvvm-light. Лоран Бюньон, человек, стоящий за MVVM Light Toolkit, который часто копается здесь, может лучше разбираться в этом вопросе.   -  person Igor Zevaka    schedule 13.05.2010


Ответы (1)


Это пример неявного стиля WPF, в котором стиль применяется ко всем элементам управления в проекте. Это не поддерживается в Silverlight.

Чтобы обойти это, вам нужно вместо этого разместить элементы управления представлением в разметке и установить для их DataContext значение viewmodel.

<Window.Resources>
    <vm:CustomerViewModel x:Key="theViewModel">  
<Window.Resources>

<vw:CustomerView DataContext={StaticResource theViewModel}/>  

theViewModel не обязательно должен исходить из раздела ресурсов, это может быть свойство в размещающем элементе управления / странице XAML.

person Igor Zevaka    schedule 13.05.2010
comment
Хорошо, да, но я хочу иметь возможность создавать представления динамически - как в статье, которую я опубликовал выше. У меня будет несколько представлений, и они будут добавлены в TabControl - так как я смогу добавить в свою коллекцию «Рабочие области» и правильно отобразить представление? Кстати, я использую набор инструментов MVVM Light ... - person Eoinii; 13.05.2010
comment
Не думайте, что вы могли бы сделать это прямо из коробки, не требуя чего-то вроде Prism - compositewpf.codeplex.com. в любом случае стоит изучить. - person Igor Zevaka; 13.05.2010
comment
Я не пробовал создавать такие шаблоны для своих моделей просмотра, возможно. - person Igor Zevaka; 13.05.2010