wpf – 在Windows 8.1上使用WindowChrome时,任务栏图标消失
发布时间:2020-12-14 04:07:48 所属栏目:Windows 来源:网络整理
导读:我在 Windows 8.1上使用自己的样式WPF窗口时遇到了一些问题.我用WindowChrome编写了一个简单的透明WPF窗口,用于默认的窗口拖动行为: Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x
我在
Windows 8.1上使用自己的样式WPF窗口时遇到了一些问题.我用WindowChrome编写了一个简单的透明WPF窗口,用于默认的窗口拖动行为:
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="300" Width="300" Background="Transparent" AllowsTransparency="True" WindowStyle="None"> <WindowChrome.WindowChrome> <WindowChrome /> </WindowChrome.WindowChrome> <Border Background="Gray" CornerRadius="20"> <Grid> </Grid> </Border> </Window> Windows 8.1设置: > 2台带扩展桌面的显示器 摄制: >启动WPF应用程序 – >当鼠标进入主屏幕时,任务栏图标将完全消失! 如果再次执行相同的repro,则会再次出现图标. 我也尝试使用.NET 4.5或.NET 4.5.1! 有谁能解释这个问题? 谢谢!
经过一些试验和错误调试后,我发现,窗口可见性设置为false,然后更新系统菜单,然后将该设置更改为true.
我认为这不是必要的,并产生这个令人讨厌的问题 这是WindowChromeWorker的方法 private void _UpdateSystemMenu(WindowState? assumeState) { const MF mfEnabled = MF.ENABLED | MF.BYCOMMAND; const MF mfDisabled = MF.GRAYED | MF.DISABLED | MF.BYCOMMAND; WindowState state = assumeState ?? _GetHwndState(); if (null != assumeState || _lastMenuState != state) { _lastMenuState = state; bool modified = _ModifyStyle(WS.VISIBLE,0); IntPtr hmenu = NativeMethods.GetSystemMenu(_hwnd,false); if (IntPtr.Zero != hmenu) { // change menu items ... } if (modified) { _ModifyStyle(0,WS.VISIBLE); } } } 所以你可以尝试看看我的分支 WPF Shell Integration Library (Ex)tended Edition 原始来源可以找到here here也是一个小测试应用程序 希望有所帮助 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows10 64位下安装pycocotools, imgaug问题
- windows-10 – Visual Studio 2015:模拟器无法验证虚拟机是
- wix – 使用嵌入式UI安装一系列嵌入式MSI包 – 显示常用进度
- windows – 将Github遥控器添加到GitKraken
- 从Windows中的命令行进行Android构建
- Windows 10用户可以快速移除U盘
- Win常用软件
- 在我的Windows 2008 DNS / DHCP服务器上注册我的Linux机器的
- windows-8 – 找不到名称/密钥AppBarButtonStyle的资源
- winapi – Win32消息队列有多深?
推荐文章
站长推荐
热点阅读