У меня есть приложение Prims MVVM, которое использовало класс Bootstrapper для запуска приложения и главного окна. Bootstrapper устарел, поэтому я переключил его на PrismApplication. Я добавил класс, который оборачивает последовательное соединение и выставляет события, которые запускаются при изменении состояний последовательного класса (например, подключен, отключен и т. Д.). Для создания экземпляра этого компонента я использую RegisterSingleton:
public partial class App : PrismApplication
{
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterSingleton<IMessages, MessageBuilder>();
containerRegistry.RegisterSingleton<AbstractLibSerial, LibSerialVariant1>();
containerRegistry.RegisterSingleton(typeof(SettingsModel));
}
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
{
base.ConfigureModuleCatalog(moduleCatalog);
moduleCatalog.AddModule(typeof(MainModule.MainModule));
moduleCatalog.AddModule(typeof(SettingsModule.SettingsModule));
}
protected override Window CreateShell()
{
return (Window)new Shell();
}
}
Shell.xaml:
<Window x:Class="VibeOR.Desktop.Shell"
xmlns:prism="http://www.codeplex.com/prism"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:VibeOR.Desktop"
mc:Ignorable="d"
Title="Vibe Base Station" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<ContentControl Name="MainRegion" prism:RegionManager.RegionName="MainRegion"/>
Когда я запускаю приложение, я вижу, что RegisterTypes вызывается до CreateShell, поэтому я надеялся, что смогу связать события из экземпляра синглтона LibSerialVariant1 с окном заголовка из класса Shell. Тем не менее, вы можете увидеть в приведенном выше коде, что я вручную создаю экземпляр оболочки (новый Shell ()). Я не уверен, как получить доступ к зарегистрированным типам контейнеров, чтобы связать их с недавно созданным объектом оболочки?
Любой вклад будет грандиозным. Спасибо!