Динамически загружать UserControl с помощью MVVM Light Toolkit - PullRequest
1 голос
/ 07 июня 2011

Я искал этот сайт и нашел 2 ссылки
как загрузить wpf usercontrol в шаблоне MVVM

MVVM-Light: загрузить UserControl в окно

но все же я не могу найти ответ на мою проблему и эту ссылку

Шаблон локатора MVVM-Light и многоразовый пользовательский контроль

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

У меня есть MainWindow, который состоит из 2 частей, одна из которых имеет TreeView (a UserControl) и другие Отображает различные пользовательские элементы управления (с именем DisplayPanel) .... точно так же, как Windows Explorer.

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

и мой TreeView сам по себе является пользовательским элементом управления.

Как я могу заставить этот составной интерфейс работать, используя MVVM.Также я планирую использовать MVVM light Toolkit.Есть ли что-то, что может помочь ...

Пример будет отличным

Спасибо ...:)

Редактировать

Мой TreeView вUserControl Я создал свойство зависимости в UserControl, которое перехватывает выбранный элемент для древовидного представления, чтобы я мог использовать это свойство зависимости для заполнения требуемого представления в привязке «MainView» ContentControl .... как выпосоветовал мне в комментариях.Все до сих пор

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

Я тоже пытался решить эту проблему .... Я использовал посредник (Messenger) в моей модели представления TreeViewUserControl для отправки сообщенияна пользовательский контроль (тот, который мне нужно отобразить) модель представления.Сообщение будет передано всякий раз, когда элемент выбран в древовидной структуре.и сообщение содержит выбранный узел.Я забыл упомянуть, что установил текст данных UserControl в его модель представления, чтобы я мог отображать данные

Но при использовании этого подхода проблема заключается в том, что когда я впервые щелкаю тип узла, данныене заполняется, но при повторном нажатии на тот же тип узла его заполняется.Происходит то, что объект UserControl становится доступным, когда элемент дерева нажимается в первый раз, и Посредник отправляет сообщение.Таким образом, Mediator не может передать сообщение в модель представления userControl .....

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

1 Ответ

1 голос
/ 08 июня 2011

Вы можете попытаться определить DataTemplate для каждого типа в ItemsSource TreeView и вместо того, чтобы иметь определенный UserControl на правой стороне, просто привязать к SelectedItem * TreeView.1006 *.В качестве альтернативы, вы могли бы использовать DataTemplateSelector .

Отредактировано для редактирования OP
Вы сделали это?

  • MainWindow имеет TreeView, у которого ItemsSource=Binding MainVM.Items.
  • MainWindow есть ContentControl, чьи Content=Binding TreeView.SelectedItem.
  • Где-то в проекте, имеют ResourceDictionary, гдедля каждого возможного типа в MainVM.Items определен DataTemplate?

Какой ViewModel (MainVM или ItemVM) вы пытаетесь использовать, и почему вы не можете его использовать?

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