3

次のコードを検討してください。

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    MessageBox.Show("MyMessage");
}

WPF ウィンドウが読み込まれた後にメッセージ ボックスを表示しようとすると、アプリケーションを実行すると、WPF ウィンドウが透明な背景で表示され (非クライアント領域のみが表示されます)、表示されるまでに 3 ~ 5 秒かかります。メッセージボックスが表示されます。メッセージ ボックスが閉じられた後にのみ、WPF ウィンドウは通常に戻ります。

これは正常ですか?他の誰かがこれを経験していますか?

編集:ウィンドウがどのように見えるかのスクリーンショットを追加しました:

ここに画像の説明を入力

4

2 に答える 2

7

はDispatcherPriorityMessageBoxで表示されます。これは、、およびなどの前に発生するため、ウィンドウのオブジェクトを初期化するコードは、を閉じるまで実行されません。Normal DataBindRenderLoadedMessageBox

MessageBoxこれは、後で DispatcherPriorityを表示するだけで修正できます。Background

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    InitializeComponent();

    this.Dispatcher.BeginInvoke(DispatcherPriority.Background, 
        new Action(delegate() { MessageBox.Show("MyMessage"); }));
}
于 2012-09-12T19:47:50.377 に答える
0

メソッドのこのオーバーロード、またはインスタンスをパラメーターとしてShow受け入れる他のオーバーロードを試してください。Window

于 2012-09-12T19:38:05.157 に答える