2016-06-15 3 views
0

Я хочу сделать макет, состоящий из нескольких видов, и каждый вид имеет свою собственную модель.Является ли вложенная модель просмотра в режиме просмотра контейнера MVVM?

Я также хочу реализовать подход ViewModel-first. Поэтому я хочу поставить некоторые контейнеры на мой взгляд, что их datacontext привязан к соответствующему свойству viewmodel контейнера viewmodel. Затем содержимое контейнера будет загружаться на основе шаблона данных, написанного для типа связанной модели viewmodel.

public class CompositVm 
{ 
     public FirstPartVm FirstPartVm { get; set; } 
     public SecondPartVm SecondPartVm { get; set; } 
} 

Я хочу знать, погода гнездования ViewModels хорошая практика и она совместима с конструкцией MVVM шаблон?

+0

Не могли бы вы дать приблизительный пример? – Noctis

+2

Я не вижу проблемы с точки зрения mvvm – nkoniishvt

ответ

2

Да. В этом нет ничего плохого. Это оптимальная практика для подхода MVVM.

Скажем у вас есть основной вид макета MainLayout, который связан с MainLayoutViewModel. Внутри MainLayout просмотра вы можете иметь 2 дочерние представления, возможно, отделяя основной вид в 2 ряда или 2 колонки говорят ChildLayout1 связаны с ChildLayout1ViewModel и ChildLayout2 обязан ChildLayout2ViewModel.

Для этого можно создавать экземпляры моделей зрения ребенка в MainLayoutViewModel

ChildLayout1ViewModel ChildLayout1ViewModelInstance = new ChildLayout1ViewModel(); 
ChildLayout2ViewModel ChildLayout2ViewModelInstance = new ChildLayout2ViewModel(); 

Вы можете установить DataContext взглядов в самой MainLayout.xaml. Это очень полезно, когда мы имеем дело с представлениями, имеющими очень большие привязки данных. Их легко разделить и соответствующим образом обрабатывать события и данные.

Это, безусловно, самое лучшее, что можно сделать, следуя модели MVVM.

Смежные вопросы