2011-10-30 7 views
0

マイアプリのメインUIはMainWindow.xamlです。メインアプリケーションウィンドウの直後にウィンドウを開くためにどのように

まず - 何が、これは、アプリケーションが起動時に表示されるウィンドウであることを引き起こしています。それは "starupオブジェクト"として定義されているようには見えず、特にこのウィンドウを起動するコードはありません。

私はアプリがMainWindow.xamlのLoadedイベント新しい「login.xaml」を定義し、ダイアログとして表示するためにそれを伝えるにすることにより開始したときに、私のログイン画面を表示させることができます。しかし、これを行うと、MainWindowはログインが閉じられるまで表示されません。

は何を達成したいことは私のアプリの起動時に、メインウィンドウが表示されている[ログインウィンドウがモーダル表示されていることの上に。

どうすればいいですか?

答えて

2
  1. VSでプロジェクトを作成するときにMainWindowの起動は、デフォルトではApp.xamlに定義されています。

    <Application ... 
          StartupUri="MainWindow.xaml"> 
        <Application.Resources> 
    
        </Application.Resources> 
    </Application> 
    
  2. の作成Loadedイベントでの対話はちょうどそれがまだロードされていないコンストラクタでそれをしない、動作するはずです。

    Loaded="Window_Loaded" 
    
    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
        new LoginDialogue().ShowDialog(); 
    } 
    
1

一つの方法は、ログインウィンドウメインウィンドウに、その表示にLoadedイベントハンドラを追加することができます

this.Loaded += LoadedEventHander; 


void LoadedEventHander(object sender, RoutedEventArgs e) 
{ 
    // Show Login.xaml here. 
} 
0
  1. app.xamlで次の行をすることができます、起動時のウィンドウを定義しますあなたはMVVMを以下している場合

    StartupUri="MainWindowView.xaml" 
    
  2. あなたはSystem.Windows.Interactivityを使用してイベントをロードされたウィンドウにコマンドをバインドすることができますしたい場合は、それを変更します(そうでない場合は、単にCRE他の人が提案してきたようにイベントハンドラを食べた)

    <i:Interaction.Triggers> 
        <i:EventTrigger EventName="Loaded"> 
         <i:InvokeCommandAction Command="{Binding MyICommand}"/> 
        </i:EventTrigger> 
    </i:Interaction.Triggers> 
    
関連する問題