• WPF篇(8)- Button按钮


    1. 用法解析

    Button因为继承了ButtonBase,而ButtonBase又继承了ContentControl,所以,Button可以通过设置Content属性来设置要显示的内容。例如

    <Button Content="确定"/>
    

    我们使用Button的时机,通常是鼠标点击事件需要有响应操作时,所以,Button的Click事件是最好的选择。

    public class Button : ButtonBase
    {
        public static readonly DependencyProperty IsDefaultProperty;
        public static readonly DependencyProperty IsCancelProperty;
        public static readonly DependencyProperty IsDefaultedProperty;
     
        public Button();
     
        public bool IsDefault { get; set; }
        public bool IsCancel { get; set; }
        public bool IsDefaulted { get; }
     
        protected override void OnClick();
        protected override AutomationPeer OnCreateAutomationPeer();
     
    }
    
    • IsDefault:用户通过按 ENTER 键时调用的默认按钮。
    • IsCancel:用户可以通过按 ESC 键来激活取消按钮。
    • IsDefaulted:获取按钮是否为按 ENTER 键时调用的默认按钮。

    2. 案例

    前端代码

        <Button x:Name="_button" 
                Content="退出" 
                Width="100" 
                Height="25" 
                Click="_button_Click" IsDefault="True"/>
    

    后端代码

        public partial class MainWindow
        {
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void _button_Click(object sender, RoutedEventArgs e)
            {
                this.Close();
            }
        }
    

    在这里插入图片描述

    3. 属性解析

    x:Name和Name的区别

    第一个设置是x:Name="_button"。首先要解释x:Name是什么意思。在这里的x表示一个命令空间,也就是xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml",Name指的是这个控件的名称。请注意,由于Button继承了FrameworkElement类,而FrameworkElement类也有一个Name属性,但是这里设置的x:Name="_button"并不是引用了FrameworkElement类的Name属性,而是指在xaml中为Button定义了一个叫“_button"的名称,并把这个“_button"映射到了Button的Name属性上,以便于我们在后端可以通过”_button“去引用这个按钮。

    也就是说,如果某个控件本身也有一个Name属性,那么前端的x:Name就赋值给控件Name属性。

    Content属性

    用来设置Button的显示内容,除了是字符串,也可以设置为其它内容,比如一个图标、一个其它元素。

    Width属性

    Width也不是Button本身的属性,而是FrameworkElement的宽度,由于Button继承了FrameworkElement,所以Width就成了按钮的宽度属性。

    Height属性

    与上面的Width类似,同属于FrameworkElement的高度属性,在此成了Button的高度属性。

    Click事件

    Click是一个事件,但不是Button的事件,而是它的基类ButtonBase的事件,事件和委托概念关系密切,因为要订阅一个事件,需要写一个回调函数,而这个回调函数的签名要和这个事件的声明委托签名保持一致。

    IsDefault属性

    这个属性是Button自身的属性,这里设置为true,表示这个button是一个默认按钮。
    this.Close()表示关闭当前窗体。

    通过C#代码订阅事件

    还可以通过C#代码提供的事件订阅符号+=去订阅事件,将上面的例子修改一下,去掉在xaml中的订阅方式,在后端代码的构造函数中订阅事件。

    前端代码

    <Button Name="_button" 
            Content="退出" 
            Width="100" 
            Height="25" 
            IsDefault="True"/>
    

    后端代码

     /// 
        /// MainWindow.xaml 的交互逻辑
        /// 
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                _button.Click += _button_Click;
            }
     
            private void _button_Click(object sender, RoutedEventArgs e)
            {
                this.Close();
            }
        }
    
  • 相关阅读:
    【LeetCode 每日一题】53. 最大子数组和
    SU-03T语音模块使用简介
    2022 极术通讯-安谋科技设计车载芯片故障检查方案,保障汽车电子电气安全
    国内首个智能体生态大会!2024百度万象大会定档5月30日
    链接加密逆向
    利用微调的deberta-v3-large来预测情感分类
    务实java虚拟机——常量池详解
    poj2752 kmp 模板题
    8月Node服务的3场事故
    查看Android打包时签名文件keystore的MD5值
  • 原文地址:https://blog.csdn.net/wu2374633583/article/details/140955648