WPF, MVVM, MasterDetailPage - PullRequest
       4

WPF, MVVM, MasterDetailPage

0 голосов
/ 15 января 2012

Я получил MasterPage UserControl, который содержит 3 пользовательских элемента управления (и 3 модели просмотра)

MasterView:
 -> MenuView (-> MenuViewModel )
 -> InfoView (-> InfoViewModel )
 -> SliderView (-> SliderViewModel )

В режиме слайдера я получил список со свойством SelectedItem, привязанным к свойству SelectedItem в модели представления (SliderViewModel)

когда SelectedItem изменяется, я хочу, чтобы он всплывал до InfoViewModel и обновлял InfoView.

Я могу сделать это с событиями, как я это делал много раз в winforms, но я ищу лучший способ использования паттерна mvvm.

еще один маленький вопрос: должен ли я создать модель представления для страницы MasterView? хотя он не содержит ничего, кроме объединения 3 пользовательских элементов управления.

Ваша помощь будет принята с благодарностью

Ответы [ 2 ]

0 голосов
/ 15 января 2012

Существует несколько параметров:

  1. Вы можете объявить SelectedItem как свойство зависимостей в классе модели представления (если он унаследован от DependencyObject)
  2. Вы можете объявить SelectedItem как обычное свойствои сделайте ваш класс модели представления для реализации интерфейса INotifyPropertyChanged и запуска события PropertyChanged в установщике.

В WPF появилось много новых концепций, но он по-прежнему взаимодействует с бизнес-логикой через события.

0 голосов
/ 15 января 2012

Я не уверен в лучшем опыте MVVM в этом сценарии, но я могу придумать один способ сделать это через MVVM.

Вы можете создать MasterViewModel и предоставить свойство в masterViewModel для связи между другими моделями представления. Как ниже

class MasterViewModel
{
    MenuViewModel;
    InfoViewModel;
    SliderViewModel;

    public CommunicationProperty 
    {
       set
       {
       InforViewModel.SomeProperty = value;
       }
    }
}

class SliderViewModel
{
    pubic SliderViewModel(MasterViewModel masterViewModel)
    {
        //hold reference of master view model in a variable  
    }

    public SelectedItem
    {
        set
        {
            // change the info view model via master view model
            masterViewModel.CommunicationProperty = value;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...