Mir*_*ral 12 .net wpf window owner z-order
是否可以在Window.Owner不获取所有功能的情况下获得某些功能?
有两个窗口,窗口A和窗口B.我想这样做,以便选择任何一个将使它们在其他应用程序之上,但任何一个可以覆盖另一个.(实际上,不仅仅是两个,但它们都应该表现得相似.)
如果我将窗口B设置Owner为A,那么切换到任一窗口都会将两者都放在其他应用程序(我想要的)之前,但也会强制B始终位于A之上(我不想要).
我实际上已经有了独立于Owner/ 跟踪窗口层次结构的代码OwnedWindows,所以我可以扩展它以解决激活问题.因此,如果这简化了问题,我正在寻找的另一个答案是:
我如何实际做"当用户激活此窗口时,将一组特定窗口(应用程序中的所有其他窗口)带到我下面的Z顺序,同时保留它们相对于彼此的现有Z顺序" ?
一种可能的解决方案是拥有一个隐藏窗口,该窗口拥有您的应用程序中的所有窗口。
你会声明它是这样的:
<Window
Opacity="0"
ShowInTaskbar="False"
AllowsTransparency="true"
WindowStyle="None">
Run Code Online (Sandbox Code Playgroud)
请务必从 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();
}
Run Code Online (Sandbox Code Playgroud)
另一个困难是您希望如何处理关闭实际应用程序。如果这些窗口之一被认为是 MainWindow,您可以将应用程序 ShutdownMode 更改为 ShutdownMode.OnMainWindowClose,然后将 MainWindow 属性设置为这些窗口中的任何一个。否则,您将需要确定所有窗口何时关闭并显式调用 Shutdown。
| 归档时间: |
|
| 查看次数: |
2499 次 |
| 最近记录: |