Silverlight - 单选按钮



RadioButton(单选按钮)是一种按钮,允许用户从一组选项中选择一个选项。用户只能从相关的选项列表中选择一个选项,这些选项是互斥的。它只有两个选项:

  • 选中
  • 清除

RadioButton 也派生自 ToggleButton,并使用相同的 IsChecked 属性以及相同的 Checked、UncheckedIndeterminate 事件。除此之外,RadioButton 还添加了一个名为 GroupName 的属性,允许您控制单选按钮如何分组。

  • 通常,单选按钮由其容器分组。这意味着,如果您将三个 RadioButton 控件放置在一个 StackPanel 中,它们将形成一个组,从中您只能选择三个中的一个。

  • 另一方面,如果您将单选按钮的组合放置在两个单独的 StackPanel 控件中,则您将有两个独立的组。

RadioButton 类的层次继承如下:

Hierarchical RadioButton

以下是 RadioButton 最常用的属性

序号 属性及描述
1

Background

获取或设置一个画刷,该画刷提供控件的背景。(继承自 Control)

2

BorderBrush

获取或设置一个画刷,该画刷描述控件的边框填充。(继承自 Control)

3

BorderThickness

获取或设置控件的边框粗细。(继承自 Control)

4

Content

获取或设置 ContentControl 的内容。(继承自 ContentControl)

5

ClickMode

获取或设置一个值,该值指示 Click 事件何时发生,以设备行为表示。(继承自 ButtonBase)

6

ContentTemplate

获取或设置用于显示 ContentControl 内容的数据模板。(继承自 ContentControl)

7

FontFamily

获取或设置用于在控件中显示文本的字体。(继承自 Control)

8

FontSize

获取或设置此控件中文本的大小。(继承自 Control)

9

FontStyle

获取或设置呈现文本的样式。(继承自 Control)

10

FontWeight

获取或设置指定字体的粗细。(继承自 Control)

11

Foreground

获取或设置一个画刷,该画刷描述前景色。(继承自 Control)

12

Height

获取或设置 FrameworkElement 的建议高度。(继承自 FrameworkElement)

13

HorizontalAlignment

获取或设置应用于 FrameworkElement 的水平对齐特性,当它在布局父级(例如面板或项控件)中组合时。(继承自 FrameworkElement)

14

IsChecked

获取或设置 ToggleButton 是否被选中。(继承自 ToggleButton)

15

IsEnabled

获取或设置一个值,该值指示用户是否可以与控件交互。(继承自 Control)

16

IsPressed

获取一个值,该值指示 ButtonBase 当前是否处于按下状态。(继承自 ButtonBase)

17

IsThreeState

获取或设置一个值,该值指示控件是否支持三种状态。(继承自 ToggleButton)

18

Margin

获取或设置 FrameworkElement 的外部边距。(继承自 FrameworkElement)

19

Name

获取或设置对象的标识名称。当 XAML 处理器从 XAML 标记创建对象树时,运行时代码可以通过此名称引用 XAML 声明的对象。(继承自 FrameworkElement)

20

Opacity

获取或设置对象的透明度。(继承自 UIElement)

21

Resources

获取本地定义的资源字典。在 XAML 中,您可以将资源项作为 frameworkElement.Resources 属性元素的子对象元素建立,通过 XAML 隐式集合语法。(继承自 FrameworkElement)

22

Style

获取或设置在布局和渲染期间应用于此对象的实例样式。(继承自 FrameworkElement)

23

Template

获取或设置控件模板。控件模板定义 UI 中控件的可视外观,并在 XAML 标记中定义。(继承自 Control)

24

VerticalAlignment

获取或设置应用于 FrameworkElement 的垂直对齐特性,当它在父对象(例如面板或项控件)中组合时。(继承自 FrameworkElement)

25

Visibility

获取或设置 UIElement 的可见性。不可见的 UIElement 不会呈现,也不会将其所需大小传达给布局。(继承自 UIElement)

26

Width

获取或设置 FrameworkElement 的宽度。(继承自 FrameworkElement)

以下是 RadioButton 最常用的方法

序号 方法及描述
1

ClearValue

清除依赖属性的本地值。(继承自 DependencyObject)

2

FindName

检索具有指定标识名称的对象。(继承自 FrameworkElement)

3

OnApplyTemplate

每当应用程序代码或内部进程(例如重建布局传递)调用 ApplyTemplate 时都会调用。简单来说,这意味着该方法在 UI 元素在您的应用程序中显示之前被调用。重写此方法以影响类的默认模板后逻辑。(继承自 FrameworkElement)

4

OnContentChanged

当 Content 属性的值更改时调用。(继承自 ContentControl)

5

OnDragEnter

在 DragEnter 事件发生之前调用。(继承自 Control)

6

OnDragLeave

在 DragLeave 事件发生之前调用。(继承自 Control)

7

OnDragOver

在 DragOver 事件发生之前调用。(继承自 Control)

8

OnDrop

在 Drop 事件发生之前调用。(继承自 Control)

9

OnGotFocus

在 GotFocus 事件发生之前调用。(继承自 Control)

10

OnKeyDown

在 KeyDown 事件发生之前调用。(继承自 Control)

11

OnKeyUp

在 KeyUp 事件发生之前调用。(继承自 Control)

12

OnLostFocus

在 LostFocus 事件发生之前调用。(继承自 Control)

13

OnToggle

当 ToggleButton 接收到切换刺激时调用。(继承自 ToggleButton)

14

SetBinding

使用提供的绑定对象将绑定附加到 FrameworkElement。(继承自 FrameworkElement)

以下是 RadioButton 最常用的事件

序号 事件及描述
1

Checked

当 ToggleButton 被选中时触发。(继承自 ToggleButton)

2

Click

当按钮控件被点击时发生。(继承自 ButtonBase)

3

DataContextChanged

当 FrameworkElement.DataContext 属性的值发生更改时发生。(继承自 FrameworkElement)

4

DragEnter

当输入系统报告以该元素作为目标的基础拖动事件时发生。(继承自 UIElement)

5

DragLeave

当输入系统报告以该元素作为源的基础拖动事件时发生。(继承自 UIElement)

6

DragOver

当输入系统报告以该元素作为潜在放置目标的基础拖动事件时发生。(继承自 UIElement)

7

DragStarting

当拖动操作开始时发生。(继承自 UIElement)

8

GotFocus

当 UIElement 获取焦点时发生。(继承自 UIElement)

9

Holding

当在该元素的命中测试区域上发生未处理的 Hold 交互时发生。(继承自 UIElement)

10

Intermediate

当 ToggleButton 的状态切换到不确定状态时触发。(继承自 ToggleButton)

11

IsEnabledChanged

当 IsEnabled 属性发生更改时发生。(继承自 Control)

12

KeyDown

当 UIElement 具有焦点时按下键盘键时发生。(继承自 UIElement)

13

KeyUp

当 UIElement 具有焦点时释放键盘键时发生。(继承自 UIElement)

14

LostFocus

当 UIElement 失去焦点时发生。(继承自 UIElement)

15

SizeChanged

当 FrameworkElement 上的 ActualHeight 或 ActualWidth 属性的值发生更改时发生。(继承自 FrameworkElement)

16

Unchecked

当 ToggleButton 被取消选中时发生。(继承自 ToggleButton)

示例

让我们来看一个简单的示例,其中包含不同的按钮。

<UserControl x:Class = "Buttons.MainPage" 
   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" 
   mc:Ignorable = "d" 
   d:DesignHeight = "300" d:DesignWidth = "400"> 
	
   <StackPanel x:Name = "LayoutRoot" Background = "White"> 
      <Button x:Name = "button" Content = "Click Me" HorizontalAlignment = "Left"  
         Margin = "10" VerticalAlignment = "Top" Width = "75"/>
			
      <StackPanel> 
		
         <Border Margin = "5" Padding = "5" BorderBrush = "Yellow" BorderThickness = "1" 
            CornerRadius = "5"> 
				
            <StackPanel>
               <RadioButton Content = "Group 1"/> 
               <RadioButton Content = "Group 1"/> 
               <RadioButton Content = "Group 1"/>
               <RadioButton GroupName = "Group3" Content = "Group 3"/>
            </StackPanel> 
				
         </Border>
			
         <Border Margin = "5" Padding = "5" BorderBrush = "Yellow" BorderThickness = "1" 
            CornerRadius = "5"> 
				
            <StackPanel>
               <RadioButton Content = "Group 2"/> 
               <RadioButton Content = "Group 2"/> 
               <RadioButton Content = "Group 2"/>
               <RadioButton GroupName = "Group3" Content = "Group 3"/>
            </StackPanel>
         </Border>
			
      </StackPanel> 
		
      <CheckBox x:Name = "checkBox1" Content = "Two States" HorizontalAlignment = "Left"  
         VerticalAlignment = "Top" Checked = "HandleCheck" Margin = "10,0,0,0" 
         Unchecked = "HandleUnchecked" Width = "90"/> 
			
      <CheckBox x:Name = "checkBox2" Content = "Three States" HorizontalAlignment = "Left"  
         VerticalAlignment = "Top" Width = "90" IsThreeState = "True" Margin = "10,0,0,0" 
         Indeterminate = "HandleThirdState" Checked = "HandleCheck" 
         Unchecked = "HandleUnchecked"/>
			
      <TextBox x:Name = "textBox1" HorizontalAlignment = "Left" Margin = "10,0,0,0" 
         TextWrapping = "Wrap" VerticalAlignment = "Top" Width = "300"/>
			
      <TextBox x:Name = "textBox2" HorizontalAlignment = "Left" 
         Margin = "10,0,0,0" Height = "23" TextWrapping = "Wrap" 
         VerticalAlignment = "Top" Width = "300"/>
			
   </StackPanel>
	
</UserControl>

这里有两个容器包含单选按钮,但有三个组。每个组框底部的最后一个单选按钮是第三个组的一部分。还有两个状态和三个状态的复选框。

以下是 事件实现 的 C# 代码。

using System.Windows; 
using System.Windows.Controls;  

namespace Buttons { 

   public partial class MainPage : UserControl { 
	
      public MainPage() { 
         InitializeComponent(); 
      } 
		
      private void HandleCheck(object sender, RoutedEventArgs e) { 
         CheckBox cb = sender as CheckBox; 
			
         if (cb.Name == "checkBox1") textBox1.Text = "2 state CheckBox is checked."; 
         else textBox2.Text = "3 state CheckBox is checked."; 
      } 
		
      private void HandleUnchecked(object sender, RoutedEventArgs e) { 
         CheckBox cb = sender as CheckBox;
			
         if (cb.Name == "checkBox1") textBox1.Text = "2 state CheckBox is unchecked."; 
         else textBox2.Text = "3 state CheckBox is unchecked."; 
      }  
		
      private void HandleThirdState(object sender, RoutedEventArgs e) { 
         CheckBox cb = sender as CheckBox; 
         textBox2.Text = "3 state CheckBox is in indeterminate state."; 
      } 
		
   } 
}

当编译并执行上述代码时,将显示以下网页。

Event Implementation
silverlight_buttons.htm
广告
© . All rights reserved.