C# Prism 5 Wpf-登录窗口显示两次
我正在visual studio 2013中开发一个登录窗口,并为桌面和依赖注入Unity安装了Prism 5 WPF。我有一个问题,我的窗口登录显示了两次,我没有找到错误,请帮助解决此问题: Bootstrapper.csC# 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
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(....)