[英]Wpf not all windows are maximized from taskbar
我有三个窗户。 FirstWindow
, SecondWindow
和ThirdWindow
。 FirstWindow
有一个按钮,单击此按钮可打开SecondWindow
。 类似地, SecondWindow
具有按钮,单击此按钮可打开ThirdWindow
。 Owner
的财产SecondWindow
如设置FirstWindow
和Owner
的财产ThirdWindow
设置为SecondWindow
。 场景描述问题:
连续打开所有窗口。 它看起来像这样:
然后通过单击ThirdWindow
右上角的相应图标最小化所有窗口。 如果您尝试通过在任务栏中单击FirstLevelWindow
或ThirdLevelWinow
来最大化所有窗口,则一切都将正常,将最大化三个窗口。 但是,如果您单击SecondWindow
您将看到以下内容:
我该如何解决,还是WPF
错误? 如果有帮助,我可以提供存档的示例项目。
UPDATE
最小化窗口-单击“ _”图标,在窗口图标栏中向左图标。 所有窗口都是模态的,即,它使用ShowDialog()
方法而不是Show()
方法打开。 因此,如果最小化第三个窗口-所有窗口将被最小化。
如果您不想通过链接下载项目,请在此处找到代码:
FirstWindow
XAML:
<Button Click="OpenChildWindow"
Content="ChildWindow"/>
FirstWindow
.cs:
private void OpenChildWindow(Object sender, RoutedEventArgs e)
{
var window = new SecondLevelWindow();
window.Owner = this;
window.ShowDialog();
}
SecondWindow
XAML:
<Button Click="OpenChildWindow"
Content="ChildWindow"/>
SecondWindow
.cs:
private void OpenChildWindow(Object sender, RoutedEventArgs e)
{
var window = new ThirdLevelWindow();
window.Owner = this;
window.ShowDialog();
}
ThirdWindow
是没有任何内容的空窗口。
这里 链接到示例项目
我刚刚发现,如果将ResizeMode
的ThirdWindow
属性设置为“ NoResize”,则不会重现该错误。 MB这将是有用的信息。
好吧,我承认我不知道发生了什么。 您是否尝试添加第四个窗口? 这变得更加奇怪:第二个窗口带回了第三个窗口,但第四个窗口仍然没有返回。
无论如何,如果我必须解决这个问题,我将在每个父窗口中保留我的childWindow的引用。 这样,在发生任何有趣的事件时(例如在示例中的第二个窗口上激活),我都可以根据需要管理孩子的状态(在您的情况下为WindowState.Normal
)。
可能是这样的:在secondWindow的xaml中:
Activated="SecondLevelWindow_OnActivated"
然后在后面的代码中:
private ThirdLevelWindow _window;
public SecondLevelWindow()
{
InitializeComponent();
}
private void OpenChildWindow(Object sender, RoutedEventArgs e)
{
_window = new ThirdLevelWindow ();
_window.Owner = this;
_window.ShowDialog();
}
public void SecondLevelWindow_OnActivated(object sender, EventArgs e)
{
if (_window != null)
{
_window.WindowState = WindowState.Normal;
}
}
这是一个开始,但是您也可以检查当前状态以定义孩子的状态。
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.