在WPF应用程序中,我想在窗口a加载时将窗口b显示为窗口a内的对话框。 我使用以下伪代码执行此操作:
window a.Loaded += WindowALoaded();
WindowALoaded
{
window b.ShowDialog();
}
这很有效。但是,它显示窗口b,并且在关闭窗口b之前窗口a不会显示。我想完全显示窗口,然后是窗口b。我该如何做到这一点?
答案 0 :(得分:2)
您可以使用已激活的事件,而不是已加载
<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;
}
答案 1 :(得分:0)
因为在WindowA的load事件中,它执行WindowB的ShowDialog(),然后在WindowA中关闭所有代码直到WindowB关闭。如果你只做WindowB.Show(),你可能应该看到WindowA被加载。您可能需要弄乱Window.Focus()和/或Window.TopMost属性,具体取决于您希望窗口如何相互显示。
还有一个Window.ContentRendered事件而不是Window.Loaded事件,这可能会对您的解决方案有所帮助