C# WPF - 拥有的窗口无法正确最小化

问题描述 投票:0回答:1

我正在编写一个 WPF 应用程序,我有 3 个窗口 A、B 和 C。A 拥有 B,B 拥有 C(通过设置

Window.Owner
属性)。

预期行为:

  • 当 B 最小化时,C 也会最小化。 (按预期工作)
  • 当 A 最小化时,B 也会最小化。 (按预期工作)
  • 当 A 最小化时,C 也会最小化。 (没有按预期工作)

当窗口 C 处于活动状态时会出现此问题。如果 A 最小化而 C 处于活动状态,则 B 也会最小化,但 C 不会最小化。否则它可以正常工作。

我通过设置

WindowA.WindowState = WindowState.Minimized
以编程方式最小化窗口 A。乍一看,这似乎最小化了其拥有的窗口 B,但 B 的
StateChanged
事件不会触发。因此,这阻止我通过在窗口 B 的
StateChanged
事件中处理窗口 C 来手动最小化窗口 C。

我目前不知道应该做什么来实现期望的行为。

我尝试通过将窗口 B 和 C 都设置为

ResizeMode
来搞乱窗口的
ResizeMode.CanMinimize
属性,但是同样的错误行为仍然存在。

c# .net wpf windows
1个回答
0
投票

更新

我发现,当 WPF 窗口最小化而不是最小化其子窗口时,它将其

Visibility
设置为 false。这相当令人困惑,因为这在文档中没有说明。

我通过订阅窗口 B 的

IsVisibleChanged
事件并将窗口 C 的可见性设置为等于窗口 B 的可见性来缓解了我所面临的问题。

windowB.IsVisibleChanged += delegate
{
  windowC.Visibility = windowB.Visibility;
};
© www.soinside.com 2019 - 2024. All rights reserved.