Управление сложным пользовательским интерфейсом с MVVM - PullRequest
4 голосов
/ 18 ноября 2009

Мой вопрос на самом деле о запуске приложения с MVVM:

Мой главный экран будет содержать много экранов. Я понимаю, что они будут UserControls.

Но я не вижу, где я могу создать экземпляр, когда захочу, когда я их покажу и когда я их спрятал?

Логика мне не ясна. Может кто-нибудь объяснить мне или указать на простой и понятный пример?

Спасибо John

Ответы [ 2 ]

2 голосов
/ 18 ноября 2009

Представьте, что у вас есть MainViewModel, который привязывается к главному экрану. Пусть MainViewModel является одноэлементным классом, и в нем есть свойство CurrentViewModel (реализовано INotifypropertyChanged). Теперь вы можете создать экземпляр любого конкретного ViewModel (на основе команды / клика) и назначить экземпляр, как показано ниже

MainViewModel.Instance.CurrentViewModel = new SomeViewModel();

Так что теперь ваш главный экран XAML будет иметь

  <Window> 
     <ContentControl Content="{Binding CurrentViewModel,Source={x:static vm:MainViewModel.Instance}}"
 </Window>

Вам необходимо определить правильные DataTemplates для каждой ViewModel (View to ViewModel Mapping). Это будет выглядеть как

<DataTemplate DataType="{x:Type vm:SomeViewModel}">
     <view:SomeView/>
</DataTemplate>

Здесь SomeView - это UserControl, соответствующий SomeVieModel.

Надеюсь, это очень кратко объясняет архитектуру MVVM

0 голосов
/ 18 ноября 2009

Вы можете использовать существующую прикладную среду, чтобы справиться с этим, а не делать это самостоятельно. В частности, Caliburn решает эту проблему с помощью Модель компонентов IPresenter . Я уверен, что есть и другие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...