2015-08-24 1 views
3

Я разрабатываю окно входа в визуальную студию 2013 года, и я установил Prism 5 WPF для рабочего стола и для Injection Unity Dependency 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)); 
    } 
} 

MainWindow является:

<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); 
    } 
} 

Когда я отладка программы в SegurididadModule.cs У меня есть это сообщение: исходный код не найден ServiceLocatorImpIBase.cs enter image description here

ответ

1

О файле App.xaml удалить StartupUri и проблема решена.

+0

Вы должны отметить это как принятый ответ. – Domysee

1

Test программы с ContentControl

<ContentControl Name="MainRegion" prism:RegionManager.RegionName="MainRegion" Margin="4" Height="291" /> 

Вместо ItemsControl

<ItemsControl Name="MainRegion" prism:RegionManager.RegionName="MainRegion" Margin="4" Height="291" /> 

Также используется VisualStudioFind All для проверки всех кодов решений, которые включают примерно следующее:

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

сделать их как comment (// regionManager.Regions["MainRegion"]....) и снова запустить ...

+0

Спасибо за ваш ответ, я попробовал ваше предложение и ту же проблему, окно входа в систему показывает мне дважды – raranibar

+0

Вы уверены, что добавили этот вид ('login') только один раз в' RegionManager' в своих кодах? Что произойдет, если вы прокомментируете эту строку? : '_regionManager.RegisterViewWithRegion (RegionNames.MainRegion, typeof (Views.UserLoginView));' – RAM

+0

Когда я прокомментирую эту строку _regionManager.RegisterViewWithRegion (RegionNames.MainRegion, typeof (Views.UserLoginView)); показывает мне в два раза основные окна – raranibar