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
廣告