MVVM-Light: загрузить UserControl в окно - PullRequest
0 голосов
/ 11 июня 2010

Как лучше всего загружать UserControl в окно с помощью MVVM-Light? Где создать экземпляр UserControl, в ViewModel из окна или прямо в окне?

Ответы [ 3 ]

3 голосов
/ 11 июня 2010

Ваша виртуальная машина не должна содержать какой-либо специфический для пользовательского интерфейса код, такой как элементы управления, если вы беспокоитесь о наилучшей практике.Например, если у вас есть свойство в виртуальной машине, которое контролирует видимость элемента управления в вашем представлении, это свойство должно иметь тип bool, а не видимость.Представление будет использовать свойство bool, чтобы скрыть или показать элемент управления.

Таким образом, у вас есть представление (например, окно), которое связывается с виртуальной машиной.Некоторые изменения свойств в виртуальной машине приводят к тому, что в окне создается некоторый код, который отображает пользовательский элемент управления.

2 голосов
/ 16 июня 2010

Я только что прочитал этот отличный пост о создании интерфейса с вкладками с MVVM (Light).Это не говорит о пользовательских элементах управления, но цель довольно близка.Это было бы легко изменить для поддержки пользовательских элементов управления.

Подход заключается в том, чтобы связать элемент управления с вкладками с наблюдаемой коллекцией рабочих областей (ViewModels).Когда добавляется новая вкладка (или рабочее пространство), она создается в ViewModel, добавляется в коллекцию, привязывается к представлению данных и отображается как новая вкладка с помощью DataTemplates.

0 голосов
/ 13 июня 2010

Я буду рад, если вы сможете показать пример использования mvvm light. У меня также есть проблема, чтобы главное окно с «дочерним окном» (пользовательские элементы управления) отображалось / скрывалось при нажатии кнопки в главном окне. поэтому я должен создать их все в одном месте, скажем, столбец сетки, а затем показать / скрыть их по привязке свойств?

...