WPF - 單選按鈕



單選按鈕是一個控制元件,允許使用者從一組選項中選擇單個選項。使用者只能從相關選項列表中選擇一個選項,這些選項是互斥的。它只有兩個選項:

  • 已選中
  • 已清除

RadioButton 類的層次繼承如下:

Hierarchical of 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)

示例

  • 讓我們建立一個名為 **WPFDialog** 的新 WPF 專案。

  • 從工具箱中拖動五個單選按鈕和四個文字塊,並將其排列如下面的 XAML 程式碼所示。

  • 以下示例顯示瞭如何使用 RadioButton。我們將顯示兩組 RadioButton。當用戶選擇一個選項時,程式將在 TextBlock 上顯示訊息。以下是 XAML 程式碼。

<Window x:Class = "WPFRadioButtonControl.MainWindow" 
   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" 
   xmlns:local = "clr-namespace:WPFRadioButtonControl" 
   mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "604"> 
	
   <Grid> 
      <TextBlock x:Name = "textBlock" HorizontalAlignment = "Left"  
         Margin = "23,68,0,0" TextWrapping = "Wrap" Text = "Gender:"
         VerticalAlignment = "Top" Width = "83" /> 
			
      <TextBlock x:Name = "textBlock1" HorizontalAlignment = "Left" 
         Margin = "23,134,0,0" TextWrapping = "Wrap" Text = "Marital Status:"
         VerticalAlignment = "Top" Width = "83" /> 
			
      <RadioButton x:Name = "rb1" Content = "Male" HorizontalAlignment = "Left"  
         Margin = "126,68,0,0" VerticalAlignment = "Top"  
         GroupName = "Gender" Width = "69" Checked = "HandleCheck" /> 
			
      <RadioButton x:Name = "rb2" Content = "Female" HorizontalAlignment = "Left"  
         Margin = "201,68,0,0" VerticalAlignment = "Top"  
         GroupName = "Gender" Width = "81" Checked = "HandleCheck" /> 
			
      <RadioButton x:Name = "rb3" Content = "Single" HorizontalAlignment = "Left"
         Margin = "126,134,0,0" VerticalAlignment = "Top"  
         GroupName = "Status" Width = "69" Checked = "HandleCheck1" />
			
      <RadioButton x:Name = "radioButton" Content = "Engaged" HorizontalAlignment = "Left"  
         Margin = "201,134,0,0" VerticalAlignment = "Top"  
         GroupName = "Status" Width = "89" Checked = "HandleCheck1" /> 
			
      <RadioButton x:Name = "radioButton1" Content = "Married"  
         GroupName = "Status" HorizontalAlignment = "Left" Margin = "302,134,0,0"
         VerticalAlignment = "Top" Width = "95" Checked = "HandleCheck1" /> 
			
      <TextBlock x:Name = "textBlock2" HorizontalAlignment = "Left"  
         Margin = "386,68,0,0" TextWrapping = "Wrap"  
         VerticalAlignment = "Top" Width = "191" Height = "26" /> 
			
      <TextBlock x:Name = "textBlock3" HorizontalAlignment = "Left"  
         Margin = "386,134,0,0" TextWrapping = "Wrap" 
         VerticalAlignment = "Top" Width = "146" Height = "31" /> 
   </Grid> 
	
</Window> 

以下是不同事件的 **C# 實現**。

using System.Windows; 
using System.Windows.Controls; 
 
namespace WPFRadioButtonControl { 
   /// <summary> 
      /// Interaction logic for MainWindow.xaml 
   /// </summary> 
	
   public partial class MainWindow : Window { 
	
      public MainWindow() { 
         InitializeComponent(); 
      } 
		
      private void HandleCheck1(object sender, RoutedEventArgs e) { 
         RadioButton rb = sender as RadioButton;
         textBlock3.Text = "You are " +  rb.Content; 
      } 
		
      private void HandleCheck(object sender, RoutedEventArgs e) { 
         RadioButton rb = sender as RadioButton; 
         textBlock2.Text = "You are " + rb.Content; 
      } 
		
   } 
}

編譯並執行上述程式碼後,將生成以下視窗。

Output of Radiobutton

建議您執行上述示例程式碼並嘗試 RadioButton 的其他屬性和事件。

wpf_controls.htm
廣告

© . All rights reserved.