C# Prism 5 Wpf-登录窗口显示两次

C# Prism 5 Wpf-登录窗口显示两次,c#,wpf,unity-container,prism,C#,Wpf,Unity Container,Prism,我正在visual studio 2013中开发一个登录窗口,并为桌面和依赖注入Unity安装了Prism 5 WPF。我有一个问题,我的窗口登录显示了两次,我没有找到错误,请帮助解决此问题: Bootstrapper.cs public class Bootstrapper : UnityBootstrapper{ protected override System.Windows.DependencyObject CreateShell(){ return

我正在visual studio 2013中开发一个登录窗口,并为桌面和依赖注入Unity安装了Prism 5 WPF。我有一个问题,我的窗口登录显示了两次,我没有找到错误,请帮助解决此问题:

Bootstrapper.cs

public class Bootstrapper : UnityBootstrapper{
    protected override System.Windows.DependencyObject CreateShell(){     
        return new MainWindow();
    }

    protected override void InitializeShell(){
        base.InitializeShell();
        App.Current.MainWindow = (Window)this.Shell;
        App.Current.MainWindow.Show();
    }

    protected override void ConfigureModuleCatalog(){
        base.ConfigureModuleCatalog();
        ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
        moduleCatalog.AddModule(typeof(SeguridadModule));
    }
}
主窗口是:

<Window x:Class="RalWpf.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:LoginControl="clr-namespace:RalWpf.Modules.Seguridad.Views;assembly=RalWpf.Modules.Seguridad"        
    xmlns:prism="http://www.codeplex.com/prism"
    xmlns:regions="clr-namespace:Microsoft.Practices.Prism.UnityExtensions.Regions;assembly=Microsoft.Practices.Prism.UnityExtensions"
    Title="Church Management System" Height="530" Width="830">
<Window.Background>
    <ImageBrush ImageSource="Resource/Image/background.jpg" />
</Window.Background>
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="35" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <ItemsControl Name="MenuRegion" prism:RegionManager.RegionName="MenuRegion" VerticalAlignment="Top"
                  Grid.RowSpan="2"  Height="26" HorizontalAlignment="Left" Margin="0,12,0,0"/>
    <Grid Margin="4,4,4,4" Grid.Row="1">
        <Border Margin="0,0,0,0" Grid.Row="1">
            <ItemsControl Name="MainRegion" prism:RegionManager.RegionName="MainRegion" Margin="4" Height="291" />
        </Border>
    </Grid>
</Grid>

SeguridadModule.cs

public class SeguridadModule : IModule{
    private readonly IUnityContainer _container;
    private readonly IRegionManager _regionManager;

    public SeguridadModule(IUnityContainer container, IRegionManager regionManager) {
        _container = container;
        _regionManager = regionManager;
    }

    public void Initialize(){
        _regionManager.RegisterViewWithRegion(RegionNames.MainRegion, typeof(Views.UserLoginView));
        _container.RegisterType<Object, Views.UserLoginView>(ViewNames.UserLoginView);
    }
}
公共类SeguridadModule:IModule{
专用只读IUnityContainer\u容器;
私有只读IRegionManager _regionManager;
公共SeguridadModule(IUnityContainer容器、IRegionManager区域管理器){
_容器=容器;
_regionManager=regionManager;
}
公共无效初始化(){
_regionManager.RegisterViewWithRegion(RegionNames.MainRegion,typeof(Views.UserLoginView));
_RegisterType(ViewNames.UserLoginView);
}
}
在seguridadmodule.cs中调试程序时,我收到以下消息:未找到源代码ServiceLocatorImpIBase.cs

使用
ContentControl

<ContentControl Name="MainRegion" prism:RegionManager.RegionName="MainRegion" Margin="4" Height="291" />
还可以使用
VisualStudio
查找全部
检查所有解决方案代码,包括以下代码:

regionManager.Regions["MainRegion"].Add(....)

将它们作为
注释
//regionManager.Regions[“MainRegion”]..
)再次运行…

在文件App.xaml上删除StartupUri并解决问题。

感谢您的回答,我尝试了您的建议,同样的问题,登录窗口显示了两个您确定添加了此视图(
登录
)在您的代码中只需一次
RegionManager
?如果你评论这行会怎么样<代码>\u regionManager.RegisterViewWithRegion(RegionNames.MainRegion,typeof(Views.UserLoginView))当我注释这一行时_regionManager.RegisterViewWithRegion(RegionNames.MainRegion,typeof(Views.UserLoginView));向我显示两次主窗口当您评论
RegisterViewWithRegion
时,您不应在主窗口内看到任何
登录视图
。对吗?如果您的视图未在
区域管理器中注册
您如何看待它?完全
清理
调试
文件夹并
重新生成
所有项目,并告诉我有关它的信息。。。!是的,当我注释RegisterViewWithRegion时,我在主窗口内看不到登录视图,只有主窗口,但有两次,我还在SeguridadModule.cs中注释了ConfigureModuleCatalog()方法this line ModuleCatalog ModuleCatalog=(ModuleCatalog)this.ModuleCatalog;moduleCatalog.AddModule(typeof(SeguridadModule));同样的问题,显示我的主窗口两次,如果你喜欢,我可以给你我的程序,它不是大的
regionManager.Regions["MainRegion"].Add(....)