Как построить динамическую сетку и привязку к XAML с помощью MVVM - PullRequest
1 голос
/ 15 декабря 2010

Я планирую приложение WPF, которое будет строить динамическую сетку с текстовыми блоками в модели представления, а затем обновлять интерфейс (xaml) с новой сеткой.

Я сделал первый шаг, но у меня проблемыобновить представление новой сеткой.

Есть ли пример кода, как связать сетку с xaml, на который я могу взглянуть ??Я действительно не могу понять это!

Спасибо

1 Ответ

1 голос
/ 15 декабря 2010

Возможно, вы немного ошибочно подходите к этому, трудно сказать из вопроса:

Обычно, чтобы показать динамический набор элементов пользовательского интерфейса в MVVM, вы связываете свойство ItemsSource ItemsControl с ObservableCollection.Свойство ItemsControl ItemsTemplate преобразует объект YourViewModel в UIElement, который может быть TextBlock или любым другим стилем, который вы хотите.

В качестве примера:

// model
class Person
{
   public string Name {get; private set;}
}

// view model
class MainViewModel
{
  public ObservableCollection<Person> People {get; private set;}
}

//view
<UserControl DataContext="{Binding MyMainViewModelObject}">
  <ItemsControl ItemsSource="{Binding People}">
    <ItemsControl.ItemsTemplate>
      <DataTemplate>
        <TextBlock Text="{Binding Name}"/>
      </DataTemplate>/
    </ItemsControl.ItemsTemplate>
  </ItemsControl>
</UserControl>

Я не тестировал этот код, он просто для иллюстрации.Есть и другие способы распространения проблемы в MVVM, все зависит от ситуации.Вы должны были бы предоставить нам более подробную информацию, чтобы помочь вам с этим.Редко в WPF возникает необходимость использовать код для создания или добавления элементов пользовательского интерфейса к другим элементам UIE и т. Д.

Однако стоит отметить более точные строки вопроса, однако то, что ItemsControl может связываться с кучейобычных объектов и использовать его шаблон для создания элементов UIElements из них, ИЛИ он может связываться со списком элементов UIElement, и в этом случае шаблон не применяется (звучит так, как если бы это была ваша ситуация).

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