Панорамный Windows Phone Phone с дизайном MVVM

Пожалуйста, помогите с проблемой дизайна / понимания MVVM.

Учитывая, что у нас есть приложение для Windows Phone со следующей структурой интерфейса:

MainPage.xaml body:

<views:PanoramaView/>

DataContext is set via MVVM Light view-model locator to a static MainViewModel class instance.

Views / PanoramaView.xaml body:

<UserControl.DataContext>
        <ViewModels:PanoramaViewModel/>
</UserControl.DataContext>

<StackPanel x:Name="LayoutRoot">
        <controls:Panorama Background="{Binding PanoramaBackgroundBrush}"
                           ItemsSource="{Binding PanoramaItems}"
                           ItemTemplate="{StaticResource panoramaItemTemplate}"
                           />
</StackPanel>

В этот момент я наткнулся на вопрос: что мне делать, если я хочу, чтобы все мои PanoramaItems состояли из разных пользовательских элементов управления? Если я определю шаблон элемента панорамы, я обрекаю их всех на одинаковые. Но я намерен иметь несколько совершенно разных предметов панорамы. Я хотел бы иметь класс (предположительно PanoramaViewModel), который позволил бы мне контролировать, какие элементы панорамы отображаются в данный момент времени.

Поэтому у меня должен быть способ придерживаться MVVM, но иметь возможность создавать новые виды (элементы панорамы) и вставлять их в PanoramaItems коллекция моего PanoramaViewModel, Где и как мне это сделать?

2 ответа

Решение

Вы должны определить ключ ресурса, чтобы определить шаблон данных с установщиком представления для элемента представления, отображаемого для различных типов классов модели представления, и получить классы VM из общего базового класса (PanoramaViewModel, т.е.)

В WPF я должен был использовать DataTemplateSelector, чтобы обойти мою проблему дизайна. Поскольку приложения для Windows Phone больше похожи на Silverlight, я могу реализовать это сам. Хороший пример того, как в этой статье и этой ветке форума silverlight.net.

Другие вопросы по тегам