我在 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 设置:
复制:
--> 当鼠标进入主屏幕时,任务栏图标将消失!
如果您再次执行相同的复制,该图标会再次出现。
我还尝试使用 .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是一个小测试应用程序
希望有帮助
关于wpf - 在 Windows 8.1 上使用 WindowChrome 时任务栏图标消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21290917/