我知道我可以切换屏幕,如果我做以下操作:
ShellViewModel.cs
public class ShellViewModel : Conductor<object>.Collection.OneActive
{
public void ShowFirstScreen()
{
ActivateItem(new FirstViewModel());
}
public void ShowSecondScreen()
{
ActivateItem(new SecondViewModel());
}
}
ShellView。xaml for OneActive
<ContentControl x:Name="ActiveItem" />
但是我想同时显示这些屏幕。因此,当从OneActive更改为AllActive时,屏幕不再可见。
我知道我可以显示这些屏幕如果我使用ItemsControl
ShellView。
<ItemsControl ItemsSource="{Binding Path=Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl cal:View.Model="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
但是我想把它们随机放置在我的ShellView.xaml.
怎么做?
如何访问它们?我想把它们像UserControls一样放在我的ShellView.xaml.
<Grid>
<ContenControl x:Name="Item1 or even the ViewModel name"/>
<ContenControl x:Name="Item2 or even the ViewModel name"/>
...
</Grid>
在你的shellview.xaml
<ContentControl x:Name="NameOfViewModel" />
在你的ShellViewModel.cs
public NameOfViewModel NameOfViewModel {
get;set; // auto for brevity
}
在你选择的OnInitialized(), OnActivated()中实例化视图模型,或者在…基本上,如果ContentControl名称匹配一个属性,你会得到一个屏幕,一旦视图模型被实例化。