由于Bootstrapper
类已经过时使用Prism 7,我想使用PrismApplication
类更改我的C#WPF应用程序。
有人知道如何使用Bootstrapper : UnityBootstrapper
对新PrismApplication
重构Prism 6应用程序吗?
我在问,因为关于这些预发行版的文档非常有限,而且我不是最了解我需要做什么才能看到Prism源代码。
答案 0 :(得分:13)
这取决于你的引导程序的作用,但是Prism.Unity.PrismApplication
有类似的方法要覆盖,所以你应该能够从引导程序复制代码。您可能只需要RegisterTypes
和CreateShell
。请务必更新App.xaml
以更改申请类型...
App.xaml
应该是这样的:
<prism:PrismApplication x:Class="WpfApp1.App"
x:ClassModifier="internal"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:prism="http://prismlibrary.com/"/>
为了完整起见,App.xaml.cs
:
internal partial class App
{
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
throw new NotImplementedException();
}
protected override Window CreateShell()
{
throw new NotImplementedException();
}
}
答案 1 :(得分:0)
好吧,所以称我为哑巴之类的人,但是我遇到了相同的问题,并且出现了相同的错误:
App.RegisterTypes(IContainerRegistery):找不到合适的方法来覆盖
答案 2 :(得分:0)
我从Prism samples on GitHub的示例1开始,立即收到一条警告,提示不建议使用UnityBootstrapper
。因此,我试图将其升级到当前机制。
第一步是将应用程序的基类从Application
的{{1}}替换为PrismApplication
中的App.xaml
。现在应该看起来像这样;
<unity:PrismApplication x:Class="BootstrapperShell.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:BootstrapperShell"
xmlns:unity="http://prismlibrary.com/">
<Application.Resources>
</Application.Resources>
</unity:PrismApplication>
然后在App.xaml.cs
中,删除对Application
的引用,并实现PrismApplication
的抽象方法。将InitializeShell
中Bootstrapper.cs
的内容复制到CreateShell()
方法中。最终结果应如下所示:
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App
{
protected override Window CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
}
}
我还为MainWindow.xaml
添加了一些标记,以确保其正确解析;
<Window x:Class="BootstrapperShell.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Shell" Height="350" Width="525">
<Grid>
<TextBlock HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="24">Hello</TextBlock>
</Grid>
</Window>
一切都应该像以前一样进行。