Два динамически назначаемых ContentControls в одном представлении в Caliburn.Micro - PullRequest
3 голосов
/ 01 августа 2011

У меня есть UserControl, который содержит два ContentControl, которые должны иметь различные представления UserControl, связанные с ними во время выполнения. Решение присоединенного свойства, отмеченное здесь , похоже, не работает в Silverlight. Или я делаю что-то не так. Я также нашел это , но это тоже не принесло радости.

У меня был один работающий ContentControl, назвав его ActiveItem. Но, конечно, у меня не может быть двух ContentControls с одинаковым именем.

Заранее спасибо за любую помощь,

Jim

1 Ответ

4 голосов
/ 01 августа 2011

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

public class MyMainViewModel
{
  private NavigationViewModel navigation;
  private MyContentViewModel main;

  public MyMainViewModel()
  {
    // better to inject factories using constructor injection here
    this.Navigation = new NavigationViewModel();
    this.Main = new MyContentViewModel();
  }

  public NavigationViewModel Navigation
  {
    get { return navigation; }
    set { navigation= value; NotifyOfPropertyChanged(() => this.Navigation); }
  }

  public MyContentViewModel Main
  {
    get { return main; }
    set { main= value; NotifyOfPropertyChanged(() => this.Main); }
  }

  ...
}

<ContentControl x:Name="Navigation" />
...
<ContentControl x:Name="Main" />
...