.net – WPF中的窗口所有者,并不总是在顶层的行为
是否可以获得一些Window.Owner的功能,而不用全部?
有两个窗口,窗口A和窗口B.我想让它选择任何一个将它们放在其他应用程序的顶部,但是可以覆盖另一个窗口. (实际上只有两个,但他们应该都表现相似.) 如果我将窗口B的所有者设置为A,则切换到任一窗口将会在其他应用程序(我想要的)前面,但也会强制B始终坐在A(我不想要的)顶部. 我实际上已经有代码跟踪窗口层次结构独立于所有者/ OwnedWindows,所以我可以扩展它来排除激活问题.所以如果这简化了问题,我正在寻找的另一个答案是: 如何实际执行“当用户激活此窗口时,将特定的一组窗口(应用程序中的其他所有内容)添加到我下方的Z顺序,同时保留其相对于彼此的现有Z顺序” ?
一个可能的解决方案是拥有一个隐藏的窗口,拥有您应用程序中的所有窗口.
你会声明如下: <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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- powershell – 我的服务帐户需要什么来解决robocopy中的“管
- iis – 防火墙阻止Windows 2008 R2上的FTP服务器
- 如何在Windows 7中配置.net framework 3.5
- windows-server-2016 – 如何在Nano Server中添加SMTP服务器
- windows – 如何在运行批处理文件时防止程序(.exe)失败的错
- windows-8 – 如何使用WinRT中的背景图片?
- windows – Powershell Get-Process负内存值
- 使用Powershell将EBS卷附加到Windows EC2
- .net – Task <>和IAsyncOperation <>
- 实现插件框架的最佳方式 – DLL是唯一的方法(C/C++项目)?