在WPF應用程序中,我想在加載窗口a時將窗口b顯示爲窗口a中的對話框。 我用下面的僞代碼做到這一點:WPF - window.ShowDialog窗口內。加載
window a.Loaded += WindowALoaded();
WindowALoaded
{
window b.ShowDialog();
}
This works。但是,它顯示窗口b,窗口a不顯示,直到我關閉窗口b。我想完全顯示窗口a,然後窗口b。我怎麼做到這一點?
在WPF應用程序中,我想在加載窗口a時將窗口b顯示爲窗口a中的對話框。 我用下面的僞代碼做到這一點:WPF - window.ShowDialog窗口內。加載
window a.Loaded += WindowALoaded();
WindowALoaded
{
window b.ShowDialog();
}
This works。但是,它顯示窗口b,窗口a不顯示,直到我關閉窗口b。我想完全顯示窗口a,然後窗口b。我怎麼做到這一點?
它是因爲在WindowA的加載事件中,它執行WindowB的ShowDialog(),然後隱藏WindowA中的所有代碼,直到WindowB關閉。如果你只是WindowB.Show(),你應該看到WindowA被加載。您可能需要混淆Window.Focus()和/或Window.TopMost屬性,具體取決於您希望窗口彼此之間顯示的方式。
還有一個Window.ContentRendered事件而不是Window.Loaded事件可能在您的解決方案幫助
您可以使用激活事件,而隨後加載
<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();
}
此外,如果不想使用t他XAML,這也很完美。
public WindowA()
{
this.Activated += Window_Activated_1;
}
Window.ContentRendered它是!謝謝。 – laconicdev