Prism 7. Использование PrismApplication.CreateShell () с не оконным элементом управления - PullRequest
0 голосов
/ 23 января 2019

Я хотел бы обновить с 6,3 до 7.

Я, кажется, столкнулся с дорожным блоком.

При использовании класса PrismApplication в App.xaml CreateShell ожидает возвращаемый тип Window вместо предыдущего BootStrapper, который хотел DependencyObject.

My MainShell - это модифицированный Telerik RadWindow, который сам по себе являетсяизмененный System.Windows.Controls.HeaderedContentControl и приведение к Window невозможно.

Есть ли способ обойти это, чтобы я мог использовать объект PrismApplication или мне нужно откатиться и использовать BootStrapper, как раньше?

1 Ответ

0 голосов
/ 24 января 2019

мне нужно откатиться и использовать BootStrapper как раньше?

Загрузчик всё ещё там. Он помечен как устаревший и может исчезнуть в будущей версии, но пока он есть, вы можете использовать его. По крайней мере, пока проблема с PrismApplicationBase не будет устранена. Для этого вы должны создать проблему на github .

Edit:

Проблема уже поднята и не будет устранена ( 1413 ).

Я скопирую предложенный обходной путь из проблемы для справки:

protected override Window CreateShell()
{
    return null;
}

protected override void OnInitialized()
{
    var shellWindow = Container.Resolve<ShellWindow>();
    shellWindow.Show();
    MainWindow = shellWindow.ParentOfType<Window>();

    // there lines was not executed because of null Shell - so must duplicate here. Originally called from PrismApplicationBase.Initialize
    RegionManager.SetRegionManager(MainWindow, Container.Resolve<IRegionManager>());
    RegionManager.UpdateRegions();
    InitializeModules();

    base.OnInitialized();
}
...