Вдохновленный этим ответом , я создал оболочку общего назначения (Prism, WPF) следующим образом:
<Window x:Class="VRMDataLogger.UI.Shell" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:prism="http://prismlibrary.com/" Title="My App" Height="450" Width="800">
<Grid>
<ContentControl prism:RegionManager.RegionManager="{Binding RegionManager}" prism:RegionManager.RegionName="MainShellRegion" />
</Grid>
</Window>
public partial class Shell : Window
{
public Shell(IRegionManager regionManager, Type contentType)
{
RegionManager = regionManager;
InitializeComponent();
RegionManager.RegisterViewWithRegion("MainShellRegion", contentType);
}
public IRegionManager RegionManager { get; }
}
Начальная оболочка создается в App.CreateShell()
:
protected override Window CreateShell()
{
return new Shell(Container.Resolve<IRegionManager>(), typeof(StartScreen));
}
Это прекрасно работает, и в исходной оболочке отображается правильный вид.
Затем я пытаюсь создать вторую оболочку из StartScreenViewModel
, которая показывает другое представление:
var shell = new Shell(RegionManager.CreateRegionManager(), typeof(MainScreen));
shell.Show();
Это открывает новое окно, но показывает тот же вид, что и первое окно (StartScreen
) вместо MainScreen
. Что я тут не так делаю?