使用 Flot2011 回答这个问题,我能够假装我的窗口属于另一个全屏窗口。对于那些对缺失部分感到好奇的人 - 它们如下: 我们为激活和停用事件实现处理程序
<Window
Activated="DisplayWindow_Activated"
Deactivated="DisplayWindow_Deactivated"
/>
事件处理程序如下所示
private void DisplayWindow_Activated(object sender, EventArgs e)
{
var screen = System.Windows.Forms.Screen.FromRectangle(
new System.Drawing.Rectangle(
(int)this.Left, (int)this.Top,
(int)this.Width, (int)this.Height));
if( screen.Primary )
Taskbar.Hide();
}
private void DisplayWindow_Deactivated(object sender, EventArgs e)
{
var screen = System.Windows.Forms.Screen.FromRectangle(
new System.Drawing.Rectangle(
(int)this.Left, (int)this.Top,
(int)this.Width, (int)this.Height));
if( screen.Primary )
Taskbar.Show();
}
那么现在会发生什么?任务栏将在主应用程序中消失,因为它是全屏的。当我单击覆盖的窗口时,任务栏将被激活,但被属性事件停用。所以混搭就像一个全屏应用程序。
该screen
部分是处理多显示器设置。如果(mashup)应用程序在主监视器上全屏显示,我们应该只隐藏任务栏。当前解决方案假定 WPF 窗口和底层全屏应用程序位于同一屏幕上。
如果您使用这些screen
东西,请不要忘记包含对System.Drawing
和的引用System.Window.Forms
。usings 在这里不是一个好主意,因为命名空间与 .net 中的内容发生冲突。