
- Silverlight 教程
- Silverlight - 首頁
- Silverlight - 概述
- Silverlight - 環境設定
- Silverlight - 入門
- Silverlight - XAML 概述
- Silverlight - 專案型別
- Silverlight - 固定佈局
- Silverlight - 動態佈局
- 受約束與不受約束
- Silverlight - CSS
- Silverlight - 控制元件
- Silverlight - 按鈕
- Silverlight - 內容模型
- Silverlight - 列表框
- Silverlight - 模板
- Silverlight - 可視狀態
- Silverlight - 資料繫結
- Silverlight - 瀏覽器整合
- Silverlight - 瀏覽器外
- Silverlight - 應用程式、資源
- Silverlight - 檔案訪問
- Silverlight - 檢視模型
- Silverlight - 輸入處理
- Silverlight - 隔離儲存
- Silverlight - 文字
- Silverlight - 動畫
- Silverlight - 影片和音訊
- Silverlight - 列印
- Silverlight 有用資源
- Silverlight - 快速指南
- Silverlight - 有用資源
- Silverlight - 討論
Silverlight - 單選按鈕
RadioButton(單選按鈕)是一種按鈕,允許使用者從一組選項中選擇一個選項。使用者只能從相關的選項列表中選擇一個選項,這些選項是互斥的。它只有兩個選項:
- 選中
- 清除
RadioButton 也派生自 ToggleButton,並使用相同的 IsChecked 屬性以及相同的 Checked、Unchecked 和 Indeterminate 事件。除此之外,RadioButton 還添加了一個名為 GroupName 的屬性,允許您控制單選按鈕如何分組。
通常,單選按鈕由其容器分組。這意味著,如果您將三個 RadioButton 控制元件放置在一個 StackPanel 中,它們將形成一個組,從中您只能選擇三個中的一個。
另一方面,如果您將單選按鈕的組合放置在兩個單獨的 StackPanel 控制元件中,則您將有兩個獨立的組。
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."; } } }
當編譯並執行上述程式碼時,將顯示以下網頁。
