Caliburn Micro - 同时显示屏幕
Caliburn Micro - Show Screens simultaniously
我知道如果我执行以下操作,我可以切换屏幕:
ShellViewModel.cs
public class ShellViewModel : Conductor<object>.Collection.OneActive
{
public void ShowFirstScreen()
{
ActivateItem(new FirstViewModel());
}
public void ShowSecondScreen()
{
ActivateItem(new SecondViewModel());
}
}
ShellView.xaml 对于 OneActive
<ContentControl x:Name="ActiveItem" />
但我想同时显示这些屏幕。因此,当从 OneActive 更改为 AllActive 时,屏幕不再可见。
我知道如果我使用 ItemsControl 就可以显示这些屏幕
ShellView.xaml AllActive
<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() 或 Ctor 中实例化视图模型...基本上,如果 ContentControl 名称与 属性 匹配,一旦视图模型被实例化,您将获得一个屏幕。没有匹配没有屏幕。
我知道如果我执行以下操作,我可以切换屏幕:
ShellViewModel.cs
public class ShellViewModel : Conductor<object>.Collection.OneActive
{
public void ShowFirstScreen()
{
ActivateItem(new FirstViewModel());
}
public void ShowSecondScreen()
{
ActivateItem(new SecondViewModel());
}
}
ShellView.xaml 对于 OneActive
<ContentControl x:Name="ActiveItem" />
但我想同时显示这些屏幕。因此,当从 OneActive 更改为 AllActive 时,屏幕不再可见。
我知道如果我使用 ItemsControl 就可以显示这些屏幕
ShellView.xaml AllActive
<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() 或 Ctor 中实例化视图模型...基本上,如果 ContentControl 名称与 属性 匹配,一旦视图模型被实例化,您将获得一个屏幕。没有匹配没有屏幕。