在使用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;
}
}