WPF 窗體在Alt+Tab中隱藏
阿新 • • 發佈:2018-01-11
mode elements true block 管理器 子窗體 cti target eight
問題:
近段時間由於項目上的需求,需要在WPF中使用COM組件,並且由於軟件界面設計等等原因,需要將部分控件顯示在COM組件之上,由於WindowsFormsHost的一些原因,導致繼承在WPF中的Winform控件或者COM組件總是置於頂層,覆蓋其他WPF元素。
為了解決樣式布局問題,這裏我采用了父子窗體方式實現,使用定位方式將子窗體置於父窗體的合適位置:
這樣,解決了設計上的問題,但是新的問題隨之又來了:使用Alt+Tab、或者任務管理器等等可以在Taskbar中看到多個窗體縮略圖,如圖:
這樣十分的影響用戶體驗,並且軟件的其他窗口也可能被用戶關掉,降低軟件的用戶體驗。
如何解決:
我們只需要將需要隱藏Alt+Tab窗體的 ShowInTaskbar 屬性設置為 False 即可
<Window x:Class="Test.RevealModelFunctionMenu" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" WindowStyle="None" BorderBrush="Transparent" BorderThickness="0" ShowInTaskbar="False" AllowsTransparency="True" Background="Transparent" Title="FunctionMenu" Height="165" Width="420">
來一張隱藏後的效果圖:
PS:
1. WindowsFormsHost is always the most top from WPF element
According to MSDN (Layout Considerations for the WindowsFormsHost Element)
A hosted Windows Forms control is drawn in a separate HWND, so it is always drawn on top of WPF elements.This is a design limitation
2. WindowsFormsHost 的布局註意事項
WPF 窗體在Alt+Tab中隱藏