我正在编写一个 WPF 应用程序,我有 3 个窗口 A、B 和 C。A 拥有 B,B 拥有 C(通过设置
Window.Owner
属性)。
预期行为:
当窗口 C 处于活动状态时会出现此问题。如果 A 最小化而 C 处于活动状态,则 B 也会最小化,但 C 不会最小化。否则它可以正常工作。
我通过设置
WindowA.WindowState = WindowState.Minimized
以编程方式最小化窗口 A。乍一看,这似乎最小化了其拥有的窗口 B,但 B 的 StateChanged
事件不会触发。因此,这阻止我通过在窗口 B 的 StateChanged
事件中处理窗口 C 来手动最小化窗口 C。
我目前不知道应该做什么来实现期望的行为。
我尝试通过将窗口 B 和 C 都设置为
ResizeMode
来搞乱窗口的 ResizeMode.CanMinimize
属性,但是同样的错误行为仍然存在。
我发现,当 WPF 窗口最小化而不是最小化其子窗口时,它将其
Visibility
设置为 false。这相当令人困惑,因为这在文档中没有说明。
我通过订阅窗口 B 的
IsVisibleChanged
事件并将窗口 C 的可见性设置为等于窗口 B 的可见性来缓解了我所面临的问题。
windowB.IsVisibleChanged += delegate
{
windowC.Visibility = windowB.Visibility;
};