2016-05-05 155 views
0

我有一个在我的应用程序启动时运行的以下方法,我首先显示维护屏幕。方法运行后,我想显示我的登录屏幕。但是,登录屏幕未打开。如果我注释掉显示维护屏幕的代码,它工作正常。show()命令不会打开窗口Wpf

private void Application_Startup(object sender, StartupEventArgs e) 
    { 

     ILocalDbDataService _locDataService =new LocalDbDataService(); 

      Maintenance mWin = new Maintenance(); 
      mWin.Show(); 

      MaintenanceViewModel maintenanceViewModel = Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<MaintenanceViewModel>(); 
      maintenanceViewModel.RunMaintenance(); 
      Login lWin = new Login();     
      lWin.Show();//This windows doesn't open 
} 

public class MaintenanceViewModel : ViewModelBase 
{ 

    private readonly ILocalDbDataService _localDbDataService; 

    public MaintenanceViewModel(ILocalDbDataService localDbDataService) 
    { 
     _localDbDataService = localDbDataService; 

    } 

    public void RunMaintenance() 
    { 
     bool result= _localDbDataService.RunTransArchiveMaintenance(); 
     MessengerInstance.Send(new NotificationMessage("CloseMaintenance")); 
    } 
} 
public partial class Maintenance : Window 
{ 
    public Maintenance() 
    { 
     InitializeComponent(); 

     Messenger.Default.Register<NotificationMessage>(this, msg => 
     { 
      if (msg.Notification == "CloseMaintenance") 
      { 
       this.Close(); 
      } 
     }); 
    } 
} 

回答

0

在维护窗口的构造函数中,创建Login窗口类的新实例并调用Show()。

public Maintenance(){ 
Login login=new Login(); 
login.Show(); 
} 
0

只需将它放置在您的主窗口中。

<ContentControl x:Name="SomeName" 
       Grid.Row="1" 
       HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch" 
       Content="{Binding CurrentScreen}" /> 

当你要更改设置CurrentScreen控件属性

CurrentScreen = new MaintenancePage(); 
CurrentScreen = new LogInPage(); // LoginPage.xaml is your login view.