从Prism 6.3迁移到7之前的Region.Context未设置

时间:2018-07-15 19:28:21

标签: wpf prism

我有一个IModule,如下:

class Child(Base):
    ...
    parent_id = Column(Integer, ForeignKey('parent.id', ondelete='CASCADE'))

在6.3中,我将覆盖public class UserModule : IModule { private readonly IRegionManager _regionManager; public UserModule(IRegionManager regionManager) { _regionManager = regionManager; } public void RegisterTypes(IContainerRegistry containerRegistry) { containerRegistry.Register<IUserCommandHandler, DisplaySettingsCommandHandler>(nameof(DisplaySettingsCommandHandler)); containerRegistry.Register<IUserCommandHandler, HelpCommandHandler>(nameof(HelpCommandHandler)); containerRegistry.Register<IEnumerable<IUserCommandHandler>, IUserCommandHandler[]>(); } public void OnInitialized(IContainerProvider containerProvider) { AddCommandHandlers(containerProvider); AddViews(); } private void AddCommandHandlers(IContainerProvider containerProvider) { var shell = (Window)_regionManager.Regions[Constants.EditRegion].Context; var commandHandlers = containerProvider.Resolve<IUserCommandHandler[]>(); foreach (var commandHandler in commandHandlers) { commandHandler.Initialize(shell); } } private void AddViews() { _regionManager.RegisterViewWithRegion(Constants.WindowCommandsRegion, typeof(CommandPanel)); _regionManager.RegisterViewWithRegion(Constants.FlyoutControlsRegion, typeof(SettingsFlyout)); _regionManager.RegisterViewWithRegion(Constants.FlyoutControlsRegion, typeof(DocumentStructureFlyout)); } } 方法并查询Initialize属性,在我的情况下为regionManager['name'].Context实例。

在7.0之前的版本中,使用Shell代替。问题是OnIntialized为空。这是预期的/已知的问题吗?

我的目标是在模块的外壳程序中注册一个键盘命令处理程序。也许还有另一种更合适的方法可以做到这一点?我愿意提出建议。

0 个答案:

没有答案