1

WPF アプリケーションで、ウィンドウ a がロードされたときに、ウィンドウ b をウィンドウ a 内のダイアログとして表示したいと考えています。次の疑似コードでこれを行います。

window a.Loaded += WindowALoaded();
WindowALoaded
{
  window b.ShowDialog();
}

これは機能します。ただし、ウィンドウbが表示され、ウィンドウbを閉じるまでウィンドウaは表示されません。ウィンドウ a を完全に表示してから、ウィンドウ b を表示したいと思います。どうすればこれを達成できますか?

4

2 に答える 2

2

Loadedではなく、 Activatedイベントを使用できます。

<Window x:Class="WpfApplication.WindowA"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="WindowA" Height="300" Width="300" 
        Activated="Window_Activated_1"  >
(...)
</Window>

あなたのコードビハインドで:

 private void Window_Activated_1(object sender, EventArgs e)
 {       
    WindowB windowB = new WindowB();
    windowB.ShowDialog();
  }

また、XAML を使用したくない場合、これも完全に機能します。

    public WindowA()
    {    
        this.Activated += Window_Activated_1;
    }
于 2013-02-06T15:33:13.620 に答える
0

これは、WindowAのloadイベントで、WindowBのShowDialog()を実行し、WindowBが閉じられるまでWindowAのすべてのコードを停止するためです。WindowB.Show()だけを実行すると、WindowAがロードされるのがわかるはずです。ウィンドウを互いに重ねて表示する方法によっては、Window.Focus()および/またはWindow.TopMostプロパティをいじる必要がある場合があります。

ソリューションに役立つ可能性のあるWindow.Loadedイベントの代わりにWindow.ContentRenderedイベントもあります

于 2013-02-06T15:25:52.843 に答える