C# WPF入门学习(四)—— 按钮控件

37 篇文章 4 订阅

上期介绍了WPF的实现架构和原理,之后我们开始来使用WPF来学习各种控件。

一、尝试插入一个按钮(方法一)

1. VS2019 在界面中,点击工具栏中的视图,在下拉菜单中选择工具箱。

至于编译器中的视图怎么舒服怎么来布置,我也会出一期文章讲述我的编译器界面如何布局的,新手和强迫症到时候可以来参考参考。

2. 言归正传,打开工具箱界面之后,我们找到button按键控件,拖入进来。

这样,一个按键就创建好了,但是如何才能修改属性变成左下角的按键的样式呢?那就需要修改XAML了

XAML 是一种强大且灵活的标记语言,适用于创建现代化、响应迅速的 Windows 应用程序界面。它的声明式语法和与 C# 的紧密集成,使其成为 WPF 和 UWP 开发的核心工具。通过学习 XAML,开发者可以更高效地设计和实现复杂的 UI 需求。

二、在XAML中插入一个button(方法二)

在可视化UI下面有一个xaml代码编辑器,在编辑器中可以更改代码和增删代码来改变布局,红框就是XAML代码编辑区。


XAML格式和内容编辑:

1. XAML中的Window元素

<Window x:Class="WpfApp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
</Window>

<Window> 元素是 WPF 中一个顶级容器,表示一个窗口。它通常是一个应用程序的主窗口或弹出窗口。这个元素包含了一些属性,用于定义窗口的外观和行为。

x:Class: 是一个 XAML 语言的特性,指定了这个 XAML 文件所对应的后台代码类。在例子中,x:Class="WpfApp.MainWindow" 指定了窗口的后台代码类是 WpfApp.MainWindow。这个类位于 MainWindow.xaml.cs 文件中,并包含窗口的逻辑代码。

xmlns: 定义了 XAML 文件中使用的命名空间。xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation":这是默认的 WPF 命名空间,包含了 WPF 中的各种控件和功能。

xmlns:x: 定义了 XAML 的命名空间,包含 XAML 语言的功能。xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml":这是 XAML 命名空间,提供了如 x:Classx:Namex:Key 等 XAML 语言功能。

Title: 定义窗口的标题栏文本。Title="MainWindow" 将窗口的标题设置为 "MainWindow"。

HeightWidth: 定义窗口的高度和宽度(以像素为单位)。Height="350"Width="525" 设置了窗口的初始大小。

这是完整的一个窗口的界面描述代码。

<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <!-- 这里可以添加更多的控件和布局 -->
    <Grid>
        <Button Content="Click Me" Width="100" Height="50" 
                HorizontalAlignment="Center" VerticalAlignment="Center"
                Click="Button_Click"/>
    </Grid>
</Window>

2. XAML中的Grid元素

<Grid>
    <Button Content="Button" HorizontalAlignment="Left" Margin="366,99,0,0" VerticalAlignment="Top" Width="99" Height="38"/>
    <Button Content="XAML创建的按钮" HorizontalAlignment="Center" VerticalAlignment="Center" Width="200" Height="30"></Button>
</Grid>

3. Button元素

当我们会创建一个按钮元素之后,在侧边的属性栏中可以改文字、颜色、背景等属性。那么如果圆角这种没有的属性如何更改和美化呢(毕竟做出来是给人看的)?直接粘代码:

<Button x:Name="myButton" Content="Click Me"
                Width="104" Height="69"
                HorizontalAlignment="Center" VerticalAlignment="Center"
                FontSize="16" FontWeight="Bold"
                Background="LightBlue" Foreground="White"
                BorderBrush="Blue" BorderThickness="2"
                Click="MyButton_Click" Margin="18,230,399,25">
            <Button.Style>
                <Style TargetType="Button">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="Button">
                                <Grid>
                                    <Ellipse x:Name="ellipse" Fill="{TemplateBinding Background}" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="{TemplateBinding BorderThickness}"/>
                                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                                </Grid>
                                <ControlTemplate.Triggers>
                                    <Trigger Property="IsMouseOver" Value="True">
                                        <Setter TargetName="ellipse" Property="Fill" Value="SkyBlue"/>
                                    </Trigger>
                                    <Trigger Property="IsPressed" Value="True">
                                        <Setter TargetName="ellipse" Property="Fill" Value="SteelBlue"/>
                                    </Trigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Button.Style>
        </Button>

像上面的代码实现的效果是什么样的呢?

x:Name="myButton"          <!-- 设置按钮的名称为myButton,便于在代码后端引用 -->
    Content="Click Me"         <!-- 按钮上显示的文字内容 -->
    Width="104" Height="69"     <!-- 设置按钮的宽度和高度 -->
    HorizontalAlignment="Center" VerticalAlignment="Center"  <!-- 让按钮在容器中水平和垂直居中对齐 -->
    FontSize="16" FontWeight="Bold"   <!-- 设置按钮文字的字体大小和加粗 -->
    Background="LightBlue" Foreground="White"  <!-- 按钮的背景色为浅蓝色,前景色(文字颜色)为白色 -->
    BorderBrush="Blue" BorderThickness="2"      <!-- 设置按钮边框颜色为蓝色,边框厚度为2 -->
    Click="MyButton_Click"             <!-- 指定按钮被点击时执行的事件处理方法 -->
    Margin="18,230,399,25">           <!-- 设置按钮的外边距,顺序为左、上、右、下 -->
  <!-- 自定义Button的样式 -->
    <Button.Style>
        <Style TargetType="Button"> <!-- 定义一个针对Button类型的样式 -->

            <!-- 重写Button的控制模板 -->
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">

                        <!-- 使用Grid布局来包含按钮的内容 -->
                        <Grid>
                            <!-- 创建一个椭圆用于自定义按钮的背景形状 -->
                            <Ellipse x:Name="ellipse" 
                                     Fill="{TemplateBinding Background}" <!-- 绑定到按钮背景色属性 -->
                                     Stroke="{TemplateBinding BorderBrush}" <!-- 绑定到按钮边框色属性 -->
                                     StrokeThickness="{TemplateBinding BorderThickness}"/> <!-- 绑定到按钮边框厚度属性 -->

                            <!-- 内容展示器,用于放置按钮上的内容(如文本) -->
                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                        </Grid>

                        <!-- 添加触发器来改变按钮状态时的外观 -->
                        <ControlTemplate.Triggers>
                            <!-- 鼠标悬停时改变椭圆背景色 -->
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="ellipse" Property="Fill" Value="SkyBlue"/>
                            </Trigger>

                            <!-- 按钮被按下时改变椭圆背景色 -->
                            <Trigger Property="IsPressed" Value="True">
                                <Setter TargetName="ellipse" Property="Fill" Value="SteelBlue"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Button.Style>

这些就是代码的详细解释了。

总结一下:

了解如何在WPF应用程序中实现按钮的创建与自定义,通过Visual Studio 2019的图形界面操作及深入XAML代码编辑,展示了按钮控件的基本应用与进阶样式调整技巧。也介绍了如何从工具箱中添加一个按钮,和手动写代码放置一个按钮。介绍了自定义按钮的代码实现。

  • 18
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值