WPF 自定义窗口,最大化时不覆盖任务栏

在使用wpf时全屏 Maximized 会遮盖任务栏,此文章以个人理解实现全屏不占据任务栏。

一、前端.xaml代码(注:代码使用了MaterialDesignInXAML;没使用 去掉style即可)

 <Button
     x:Name="btnMin"
     Content="—"
     Style="{StaticResource MaterialDesignFlatMidBgButton}" />
 <Button
     x:Name="btnMax"
     Content="?"
     Style="{StaticResource MaterialDesignFlatMidBgButton}" />

  前端Window内 加上WindowState="Normal"   WindowStyle="None"

二、后端.cs

1、此方法放在初始化内

btnMin.Click += (s, e) => { this.WindowState = WindowState.Minimized; };
btnMax.Click += (s, e) =>
{
    if (strWState == "HMax")
    {
        ChangeWindowState("HMax");
    }
    else if (strWState == "Normal")
    {
        ChangeWindowState("Normal");
    }
};

2、自定义方法,rcnormal用来记录strWState == "Normal"时窗体的位置与大小

//Normal-普通、Max-最大化*全屏、HMax最大化*全屏(不包括任务栏)  
private string strWState = "Normal";
Rect nowState;//保存下当前位置与大小
public void ChangeWindowState(string WinState)
{
   switch(WinState)
     {
          case "HMax": {
                  this.Left = nowState.Left;
                  this.Top = nowState.Top;
                  this.Width = nowState.Width;
                  this.Height = nowState.Height;
                  strWState = "Normal";
              } break;
          case "Normal": {
                  nowState = new Rect(this.Left, this.Top, this.Width, this.Height);
                  this.Left = 0;//设置位置
                  this.Top = 0;
                  Rect rc = SystemParameters.WorkArea;//获取工作区大小
                  this.Width = rc.Width;
                  this.Height = rc.Height;
                  strWState = "HMax";
              } break;
          default:break;
      }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值