Windows Phone с панорамой на базе данных с дизайном MVVM - PullRequest
0 голосов
/ 10 сентября 2011

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

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

MainPage.xaml тело:

<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 ]

1 голос
/ 10 сентября 2011

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

0 голосов
/ 10 сентября 2011

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

...