• WPF的Button学习(Button RepeatButton ToggleButton CheckBox RadioButton)


    ·Button

    ·RepeatButton

    ·ToggleButton

    ·CheckBox

    ·RadioButton

     

    1.Button

    WPF 的按钮类只在ButtonBase 现有基础上加了个简单的概念:是一个取消按钮还是一个默认按钮。这

    种机制对于对话框来说是一种捷径。如果对话框上一个按钮的Button.IsCancel 被设置成了True,你点击了

    那个按钮,这个对话框会自动关闭。如果Button.IsDefault 被设置成了true,除非焦点不在这个按钮上,否

    则按回车就会触发这个按钮的Click 事件。

    按钮控件的IsDefault 和IsDefaulted 属性有什么差别?

    IsDefault 属性是一种可读写属性,可以决定按钮是否应该是默认的。IsDefaulted 名字取得比较烂,它是

    只读属性,表示按钮的某一状态,比如按回车键会使它处于点击状态。换句话说,当IsDefault 是true 的时

    候,IsDefaulted 只能是true,并且不管是默认按钮还是TextBox(同时AcceptsReturn 被设为false)获得了

    焦点。这个特性使得你可以通过按回车键来触发默认按钮的点击事件,即使这时焦点在TextBox 上。

    如何才能以编程方式点击一个按钮?

    按钮和其他WPF 控件一样,有一个属于System.Windows.Automation.Peers 命名空间的peer 类来支持

    UI Automat ion:ButtonAutomat ionPeer,可以这样使用它:

    4

    UI Automat ion 类有许多对于自动测试相当有用的成员。

    2.RepeatButton

    RepeatButton 的行为基本和Button 一样,除了它会在按钮一直被按着的情况下触发点击事件(它没有

    Button 的取消和默认这两种行为,因为它直接继承自ButtonBase)。产生点击事件的频率主要由RepeatButton

    的Delay 以及Interval 这两个属性的值决定;这两个属性的默认值分别是SystemParameters.KeyboardDelay

    以及SystemParameters.KeyboardSpeed。默认情况下,Repeat- Button 看起来和Button 一样(如图4-1 所示)。

    RepeatButton 的行为乍听起来很奇怪,其实它对于计算一段时间内某个按钮被按次数的增减统计是非常

    有用的。例如,当用鼠标点在上面,保持长时间不释放时,滚动条底下的那个按钮就可以展示被重复按下

    的行为,或者你在做一个数字的“上下”控件(WPF 没有内建这种控件),你会使用两个RepeatButton 去控

    制数字的大小。RepeatButton 属于System.Windows.Controls.- Primit ives 命名空间,你应该会把它和其他成

    熟的控件一起使用,而不是单独使用它。

    3.ToggleButton

    ToggleButton 是一种在点击时可以保留其状态的“粘性”按钮(它也没有Button 控件的取消行为以及默

    认行为)。第1 次点击它的时候,IsChecked 属性会被设为true;再点击一次,就被设为了false。ToggleButton

    的默认外观和Button 以及RepeatButton 完全一样。

    ToggleButton 还有一个IsThreeState 属性,如果把它设为true 的话,IsChecked 就会有3 种值:true、false

    或者null。事实上,IsChecked 是Nullable<Boolean>类型的。第1 次点击ToggleButton 会把IsChecked 设为

    true,第2 次则把它设为null,第3 次把它设为false,依此类推。

    除了IsChecked 属性以外,ToggleButton 分别为每一个IsChecked 的值定义了不同的事件:true 对应

    Checked 事件,false 对应Unchecked 事件,null 对应Indeterminate 事件。ToggleButton 没有单独的

    IsCheckedChanged 事件似乎很奇怪,但是3 种不同的事件便于声明。

    和RepeatButton 一样,ToggleButton 也属于System.Windows.Controls.Primitives 命名空间,这意味着

    WPF 的设计器并不期望用户在没有额外定制的情况下直接使用ToggleButton。这个设想很自然,但在后面

    的章节里你会看到,如何在一个ToolBar 里直接使用ToggleButton。

    4.CheckBox

    CheckBox 是一种常见的控件,如图4-2 所示。但是请等一下……这一节难道不是在讨论按钮控件吗?

    没错,不过请先想一下WPF CheckBox 的特性:

    ·它拥有由外部提供的内容(所以不算标准的复选框)。

    5

    ·它可以区分是被鼠标点击还是被键盘点击。

    ·它可以在被点击时记录选中(checked)或者未选中(unchecked)状态。

    ·它支持3 种状态模式,分别为选中(checked)、不确定(indeterminate)、未选中(unche- cked)。

    听起来觉得似曾相识吗?应该很熟悉吧,因为CheckBox 和ToggleButton 只有外观上的差别!CheckBox

    除了在继承ToggleButton 时重写了控件默认样式以及视觉外观以外,其他都与ToggleButton 完全一样,如

    图4-2 所示。

    图4-2 WPF CheckBox

    5.RadioButton

    RadioButton 是另一种从ToggleButton 继承过来的控件,但它的特殊在于支持互斥性。当多个RadioButton

    被放在一个组里,一次只有一个可以被选中,把一个RadioButton 选中就会自动把组中其他所有的

    RadioButton 设为不选中。事实上,用户不能直接通过选中RadioButton 来取消对它本身的选中,这一动作

    只能通过编程方式来完成。因此,RadioButton 是为多项选择所设计的。RadioButton 的默认外观如图4-3 所

    示。

    图4-3 WPF RadioButton

    把几个WPF RadioButton 放在同一组里是非常直观的。默认情况下,任何RadioButton 被自动分成一个

    组,共享同一个逻辑父元素。比如,以下几个RadioButton 一次只有一个可以被选中:

    如果需要用自定义的方法对RadioButton 作分组,那么可以用它的GroupName 属性,这个属性是字符

    串类型的,任何拥有相同GroupName 的RadioButton 会被分在同个组里(只要它们在逻辑上属于同一个源)。

    因此可以把属于不同父元素的RadioButton 放在一个组中:

  • 相关阅读:
    MATLAB 编程风格指南及注意事项
    Redis笔记
    HDU-5706
    【sqli-labs】 less4 GET
    【sqli-labs】 less3 GET
    【sqli-labs】 less2 GET
    【sqli-labs】 less1 GET
    Ubuntu14.04环境下java web运行环境搭建
    Android进度条控件ProgressBar使用
    Android中DatePicker与TimePicker用法讲解(包括DatePickerDialog与TimePickerDialog)
  • 原文地址:https://www.cnblogs.com/fxiaoquan/p/2596763.html
Copyright © 2020-2023  润新知