制作出发点:由于窗体自带windowstyle样式并不是我所期望
效果
步骤:找到解决方案,右键单击【引用】选择管理NuGet程序包,下载如下图所示类包:
步骤二:
点击window元素,打开对应的属性栏,搜索WindowStyle,将这个属性值设置为None,你会发现原有的窗体上方样式立刻消失。然后在对应的window元素下加入类库所需要的命名空间
<Window x:Class="UI_des.MainWindow"
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"
xmlns:local="clr-namespace:UI_des"
<!--命名空间-->
xmlns:materialDesign = "http://materialdesigninxaml.net/winfx/xaml/themes"
mc:Ignorable="d" Height="600" Width="1024" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" BorderThickness="0" WindowStyle="None">
步骤三、UI代码
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Grid.ColumnSpan="2" MouseDown="WindowGrid_MouseDown" >
<!--渐变色-->
<Grid.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF113FD0"/>
<GradientStop Color="#FF2241BD" Offset="1"/>
</LinearGradientBrush>
</Grid.Background>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="10, 0">
<Button Name="MinBtn" Width="30" Height="30" Background="{x:Null}" BorderBrush="{x:Null}" Click="MinBtn_Click" Foreground="White">
<materialDesign:PackIcon Kind="LinkBoxOutline"></materialDesign:PackIcon>
</Button>
<Button Name="SizeBtn" Width="30" Height="30" Background="{x:Null}" BorderBrush="{x:Null}" Click="SizeBtn_Click" Foreground="White">
<materialDesign:PackIcon Kind="Rectangle"></materialDesign:PackIcon>
</Button>
<Button Name="ExitBtn" Width="30" Height="30" Background="{x:Null}" BorderBrush="{x:Null}" Click="ExitBtn_Click" Foreground="White">
<materialDesign:PackIcon Kind="Power"></materialDesign:PackIcon>
</Button>
</StackPanel>
</Grid>
</Grid>
步骤4、编写对应的鼠标响应事件,注意,代码复制后还需要找到对应的元素,绑定其对应操作的触发事件,如图所示(举例:窗体拖拽)
private void ExitBtn_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void SizeBtn_Click(object sender, RoutedEventArgs e)
{
this.WindowState = this.WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized;
}
private void WindowGrid_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
DragMove();
}
}
private void MinBtn_Click(object sender, RoutedEventArgs e)
{
if (WindowState != WindowState.Minimized)
{
WindowState = WindowState.Minimized;
}
}