2010-12-14 19 views
2

私はWPFアプリケーションが起動したらすぐに(ShowDialog(this)を使用して)モーダルダイアログを開こうとしています。アプリケーションが初期化されるとすぐにダイアログを開くにはどうすればよいですか?

public MainWindow() 
{ 
    InitializeComponent(); 

    ShowMyDialogDammit(); 
} 

と::

public MainWindow() 
{ 
    InitializeComponent(); 
} 

protected override void OnInitialized(EventArgs e) 
{ 
    base.OnInitialized(e); 
    ShowMyDialogDammit(); 
} 

私はこれをどのように行うのですが、私は、ウィンドウがまだ初期化されていないと思われるので、InvalidOperationExceptionがを投げるどちらも、次の方法を試してみましたか?

答えて

3

FrameworkElement.Loadedイベントのハンドラを追加します(「要素がレイアウトされ、レンダリングされ、対話する準備が整ったときに発生します」)、イベントハンドラ内からダイアログを開きます。たとえば
:あなたはどこにでもメインウィンドウクラス内 "にShowDialog" コールを必要としない

var w = new MainWindow(); 
w.ShowDialog(); 

public MainWindow() 
{ 
    InitializeComponent(); 

    // Adding the event handler 
    Loaded += new RoutedEventHandler(IsLoaded); 
} 

private void Loaded(object sender, RoutedEventArgs e) 
{ 
    ShowMyDialogDammit(); 
} 
1

WindowsのLoadedイベントから実行してください。

0

はこれを試してみてください。

+0

メインウィンドウを開くとすぐに別のモーダルダイアログを表示するためのものです。 – thecoop

+0

ああ、大丈夫です。私はその質問を誤解した。ごめんなさい。 –