Динамический пользовательский интерфейс через MVVM Pattern - PullRequest
2 голосов
/ 03 марта 2011

Я строю wpf-приложение на основе MVVM и столкнулся с некоторой проблемой: Мне нужно построить пользовательский интерфейс на основе информации, которая поступает из модели, например Моя модель содержит список процессов (загружается из файла XML - динамический), каждый процесс содержит информацию (имя, путь к значку и т. Д.) Для каждого процесса мне нужно создать одну кнопку (которая отображает информацию о соответствующем процессе), для этого мне нужно получить список процессов из viewModel в пользовательский интерфейс (чтобы выполнить фактическую сборку пользовательского интерфейса), который будет заставить пользовательский интерфейс ссылаться на контейнер процессов ... и сломать MVVM.

у кого-то есть идеи, как реализовать это, не ломая MVVM ??

Большое спасибо.

Ответы [ 2 ]

7 голосов
/ 03 марта 2011

Используйте ItemsControl, привязанную к коллекции в ViewModel.Внутри ItemsControl определите DataTemplate, который по сути будет оберткой вокруг построения вашего Button на основе каждого процесса.

  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <Button Content="{Binding ProcessName}"/>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
0 голосов
/ 03 марта 2011

Если вам нужно сделать больше, чем просто изменить текст в кнопке, вы можете использовать DataTemplateSelector

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