如何制作全屏模式,而不使用以下任务栏覆盖任务栏:wpf c#

时间:2016-01-26 08:47:00

标签: c# wpf xaml taskbar startmenu

我需要在WPF应用程序中更改Windows任务栏。为此我设置WindowStyle="None",这意味着禁用Windows任务栏,并使用按钮进行自定义任务栏以恢复,最小化和关闭应用程序。现在我的问题是如果应用程序处于最大化模式,那么我无法在Windows上看到开始菜单。

我在这里发现了一个类似的问题,但是当我尝试这个代码时它没有编译。 full screen mode, but don't cover the taskbar

如何创建自己的任务栏并在最大化时能够看到Windows开始菜单? xaml中是否有可以设置它的属性窗口?

6 个答案:

答案 0 :(得分:16)

你可以试试这个:

MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
MaxWidth = SystemParameters.MaximizedPrimaryScreenWidth;

答案 1 :(得分:3)

在CodeProject上找到了一个可能有用的解决方案:http://www.codeproject.com/Articles/107994/Taskbar-with-Window-Maximized-and-WindowState-to-N

WindowStyle="None"
WindowState="Maximized"
ResizeMode="NoResize"

this.Width = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width;
this.Height = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height;
this.Left = 0;
this.Top = 0;
this.WindowState = WindowState.Normal;

答案 2 :(得分:1)

建议的解决方案对我有用仍然需要更正窗口的像素到dpi设置器值,无论用户设置如何都具有正确的大小:

xaml中的

WindowStyle="None" WindowState="Maximized" ResizeMode="NoResize"

代码:

public MainWindow()
{
    InitializeComponent();
    var graphics = System.Drawing.Graphics.FromHwnd(IntPtr.Zero);
    var pixelWidth = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width ;
    var pixelHeight = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height;
    var pixelToDPI = 96.0 / graphics.DpiX ;
    this.Width = pixelWidth * pixelToDPI;
    this.Height = pixelHeight * pixelToDPI;
    this.Left = 0;
    this.Top = 0;
    this.WindowState = WindowState.Normal;
}

答案 3 :(得分:0)

WindowStyle="None" 
AllowsTransparency="True"  

this.Top = 0;
this.Left = 0;
this.Width = SystemParameters.WorkArea.Width;
this.Height = SystemParameters.WorkArea.Height;

答案 4 :(得分:0)

WPF解决方案

假设我们想要将WPF项目的mainWindow放在屏幕的右下角,而不覆盖taskBar。 我们写这个:

public MainWindow()
    {
        InitializeComponent();
        // set position of window on screen
        this.Left = SystemParameters.PrimaryScreenWidth - this.Width;
        this.Top = SystemParameters.WorkArea.Bottom - this.Height;
    }

this =我们的对象(MainWindow) 当我们从PrimarySrceenWidth中减去窗口位置(左)时,我们首先放置左参数。 然而,我们通过从屏幕底部的工作区域减去窗口高度来获得最低点。 屏幕的工作区域不包括任务栏!

享受!

Avri

答案 5 :(得分:0)

您可以通过添加以下内容轻松地在XAML中添加高度限制:

MaxHeight="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenHeight}}"

进入窗口的标签。