是否有可能获得Window.Owner
的某些功能而无法获得所有功能?
有两个窗口,窗口A和窗口B.我想这样做,以便选择任何一个将使它们在其他应用程序之上,但任何一个可以覆盖另一个。 (实际上不仅仅是两个,但它们都应该表现得相似。)
如果我将窗口B的Owner
设置为A,那么切换到任一窗口都会将两者都放在其他应用程序(我想要的)之前,但也会强制B始终位于A之上(我不想要。)
我实际上已经拥有独立于Owner
/ OwnedWindows
跟踪窗口层次结构的代码,因此我可以扩展它以解决激活问题。因此,如果这简化了问题,我正在寻找的另一个答案是:
如何实际操作“当用户激活此窗口时,将一组特定窗口(应用程序中的所有其他窗口)添加到我下方的Z顺序,同时保留它们相对于现有的Z顺序彼此“?
答案 0 :(得分:4)
一种可能的解决方案是拥有一个拥有应用中所有窗口的隐藏窗口。
你会声明如下:
<Window
Opacity="0"
ShowInTaskbar="False"
AllowsTransparency="true"
WindowStyle="None">
请务必从App.xaml中删除StartupUri。在App.xaml.cs中,您可以覆盖OnStartup,如下所示:
protected override void OnStartup(StartupEventArgs e)
{
HiddenMainWindow window = new HiddenMainWindow();
window.Show();
Window1 one = new Window1();
one.Owner = window;
one.Show();
Window2 two = new Window2();
two.Owner = window;
two.Show();
}
另一个难点是您希望如何处理关闭实际应用程序。如果其中一个窗口被视为MainWindow,您只需将应用程序ShutdownMode更改为ShutdownMode.OnMainWindowClose,然后将MainWindow属性设置为其中一个窗口。否则,您需要确定所有窗口何时关闭并明确调用Shutdown。