WPF【一】自制窗体windowstyle属性样式,并且实现放大、缩小、关闭功能

制作出发点:由于窗体自带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;
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值