Caliburn.Micro 中单个视图中的两个动态分配的 ContentControl

Jim*_*eri 3 silverlight mvvm contentcontrol silverlight-4.0 caliburn.micro

我有一个 UserControl,其中包含两个需要在运行时绑定到它们的不同 UserControl 视图的 ContentControl。此处提到的附加属性解决方案在 Silverlight 中似乎不起作用。或者,我做错了什么。我也发现了这个,但它也没有带来任何快乐。

我通过将其命名为“ActiveItem”来使单个 ContentControl 工作。但是,当然,我不能有两个同名的 ContentControl。

在此先感谢您的帮助,

吉姆

dev*_*tal 5

只需在主视图模型上公开两个公共属性,每个属性都是您希望显示的视图模型类型的实例。然后,在您的视图中有一个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" />
Run Code Online (Sandbox Code Playgroud)