Как добавить новую сетку в сетку в коде с MVVM - PullRequest
1 голос
/ 17 февраля 2012

Как я могу динамически добавить сетку в другую сетку?Я не могу сделать это:

myGrid.Children.Add(dg);

Поскольку у меня нет экземпляра этой сетки - я использую MVVM.

Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 17 февраля 2012

Полагаю, поскольку вы упомянули MVVM, что вы хотите сделать это с помощью вашей модели представления?

В этом случае я предлагаю отправить сообщение из модели представления в представление. В представлении вы добавляете подписку на это сообщение и добавляете оттуда Grid.

Вы могли бы сделать это примерно так, в самой простой форме. Это будет использовать превосходную MVVM Light Framework :

ViewModel.cs:

private void CreateGrid()
{
  Messenger.Default.Send<NotificationMessage>(new NotificationMessage("CreateGrid"));
}

View.xaml.cs:

Messenger.Default.Register<NotificationMessage>(this, nm =>
{
  if (nm.Notification != "CreateGrid") return;
  // Create grid here
});
1 голос
/ 17 февраля 2012

Если вы динамически добавляете элементы управления во время выполнения, краткий ответ заключается в том, что вы, вероятно, не добьетесь успеха, делая это через MVVM.Может быть, вам лучше всего добавить это в код - не зная, какое приложение вы разрабатываете, трудно судить и громко требовать, чтобы вы ДОЛЖНЫ использовать MVVM.

При этом я редкоя попадаю в ситуацию с WPF, где мне приходится делать динамические манипуляции, подобные этим.Вместо этого я использую различные конструкции WPF (ListBox, ContentControl, ItemsControl и т. Д.), А также такие вещи, как ItemTemplates, чтобы получить то, что я хочу.

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

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