2016-05-05 151 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.