ToggleButton
可切换状态的控件基类,例如 CheckBox。
ToggleButton是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。
IsChecked属性指定 ToggleButton 的状态。 IsThreeState属性指定 ToggleButton 是否有两种或三种状态。
若要对多个 ToggleButton 控件应用相同的属性设置,请使用 Style 属性。 您可以修改 ControlTemplate 默认值,为控件指定独特的外观。 有关创建 ControlTemplate 的详细信息,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于 ToggleButton 的部分和状态,请参阅 切换按钮样式和模板。
此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题。
只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。
字段
名称 | 备注 | 权限 |
---|---|---|
CheckedEvent | 标识 Checked 路由事件 | public |
IndeterminateEvent | 标识 Indeterminate 路由事件 | public |
IsCheckedProperty | 标识 IsChecked 依赖项属性 | public |
IsThreeStateProperty | 标识 IsThreeState 依赖项属性 | public |
UncheckedEvent | 标识 Unchecked 路由事件 | public |
属性
名称 | 备注 | 权限 |
---|---|---|
IsChecked | 获取或设置是否选中 ToggleButton | public |
IsThreeState | 决定控件是支持两种状态还是支持三种状态 | public |
方法
名称 | 备注 | 权限 |
---|---|---|
OnChecked | 当 ToggleButton 引发 Checked 事件时调用 | protected |
OnClick | 当用鼠标或键盘单击控件时调用 | protected |
OnCreateAutomationPeer | 提供 ToggleButtonAutomationPeer 此控件的适当实现,作为 WPF 基础结构的一部分 | protected |
OnIndeterminate | 当 ToggleButton 引发 Indeterminate 事件时调用 | protected |
OnToggle | 由 OnClick() 方法调用以实现切换行为 | protected |
OnUnchecked | ToggleButton 引发 Unchecked 事件时调用 | protected |
ToString | 返回 ToggleButton 对象的字符串表示形式 | public |
事件
名称 | 备注 | 权限 |
---|---|---|
Checked | 在选中 ToggleButton 时发生 | public |
Indeterminate | 在 ToggleButton 的状态既不是开也不是关时发生 | public |
Unchecked | 在未选中 ToggleButton 时发生 | public |
CheckBox
表示用户可以选择和清除的控件。
CheckBox 控件从 ToggleButton 中继承,并且可以有三种状态:选中 (选中) 、取消选中 (清除) 和不确定。
CheckBox是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。
若要对多个 CheckBox 控件应用相同的属性设置,请使用 Style 属性。 您可以修改 ControlTemplate 默认值,为控件指定独特的外观。 有关创建 ControlTemplate 的详细信息,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于 CheckBox 的部分和状态,请参阅 复选框样式和模板。
此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题。
只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。
https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.controls.checkbox?view=net-5.0
方法
名称 | 备注 | 权限 |
---|---|---|
OnAccessKey | 调用 CheckBox 的访问键时调用 | protected |
OnCreateAutomationPeer | 为 CheckBox 创建一个 AutomationPeer | protected |
OnKeyDown | 响应 CheckBoxKeyDown 事件 | protected |
ToggleButton
ToggleButton.IsChecked
public bool? IsChecked { get; set; }
获取或设置是否选中 ToggleButton。Nullable<Boolean>。
如果 ToggleButton 已选中,则为 true
;如果 ToggleButton 未选中,则为 false;否则为 null
。 默认值为 false
。
ToggleButton.IsThreeState
public bool IsThreeState { get; set; }
决定控件是支持两种状态还是支持三种状态。
如果控件支持三种状态,则为 true
;否则为 false
。 默认值为 false
。
IsChecked当为时,属性可以设置为 null
第三种 IsThreeState 状态 true
。
ToggleButton.OnChecked(RoutedEventArgs)
protected virtual void OnChecked (System.Windows.RoutedEventArgs e);
当 ToggleButton 引发 Checked 事件时调用。
ToggleButton.OnClick
protected override void OnClick ();
当用鼠标或键盘单击控件时调用。
ToggleButton.OnCreateAutomationPeer
protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer ();
提供 ToggleButtonAutomationPeer 此控件的适当实现,作为 WPF 基础结构的一部分。
ToggleButton.OnIndeterminate(RoutedEventArgs)
protected virtual void OnIndeterminate (System.Windows.RoutedEventArgs e);
当 ToggleButton 引发 Indeterminate 事件时调用。
ToggleButton.OnToggle
protected internal virtual void OnToggle ();
由 OnClick() 方法调用以实现切换行为。此方法将切换 IsChecked 属性。
Unchecked(RoutedEventArgs)
protected virtual void OnUnchecked (System.Windows.RoutedEventArgs e);
当 ToggleButton 引发 Unchecked 事件时调用。
ToggleButton.ToString
public override string ToString ();
返回 ToggleButton 对象的字符串表示形式。
ToString方法返回一个字符串,该字符串包含 Content 属性的和值 IsChecked 。
ToggleButton.Checked
public event System.Windows.RoutedEventHandler Checked;
在选中 ToggleButton 时发生。
ToggleButton.Indeterminate
public event System.Windows.RoutedEventHandler Indeterminate;
在 ToggleButton 的状态既不是开也不是关时发生。
ToggleButton.Unchecked
public event System.Windows.RoutedEventHandler Unchecked;
在未选中 ToggleButton 时发生。
CheckBox
CheckBox.OnAccessKey(AccessKeyEventArgs)
protected override void OnAccessKey (System.Windows.Input.AccessKeyEventArgs e);
调用 CheckBox 的访问键时调用。
CheckBox.OnCreateAutomationPeer
protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer ();
为 CheckBox 创建一个 AutomationPeer。
CheckBox.OnKeyDown(KeyEventArgs)
protected override void OnKeyDown (System.Windows.Input.KeyEventArgs e);
如果重写 OnKeyDown(KeyEventArgs) ,请始终在实现中调用基实现 OnKeyDown(KeyEventArgs) 。
XAML范例
<Window
x:Class="CheckBoxDemo.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:local="clr-namespace:CheckBoxDemo"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="MainWindow"
Width="800"
Height="450"
mc:Ignorable="d">
<Grid>
<CheckBox
HorizontalAlignment="Center"
VerticalAlignment="Center"
HorizontalContentAlignment="Center"
Background="LightSkyBlue"
BorderBrush="DarkRed"
BorderThickness="2"
Content="_CheckBoxTest"
IsThreeState="True"
Indeterminate="CheckBox_Indeterminate"
Checked="CheckBox_Checked"
Unchecked="CheckBox_Unchecked" Click="CheckBox_Click" KeyDown="CheckBox_KeyDown"
/>
</Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace CheckBoxDemo
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void CheckBox_Indeterminate(object sender, RoutedEventArgs e)
{
MessageBox.Show((sender as CheckBox).IsChecked.ToString());
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
MessageBox.Show((sender as CheckBox).IsChecked.ToString());
}
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
MessageBox.Show((sender as CheckBox).IsChecked.ToString());
}
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("CheckBox is Clicked");
}
private void CheckBox_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show("CCheckBox_KeyDown");
}
}
}
Content="_CheckBoxTest" 指定快捷键是Alt+C
运行:
单击、Alt+C 会引发Indeterminate、Checked、Unchecked事件中的一种,这里设置 IsThreeState="True" 。
任一按键按下
鼠标单击
注意的是快捷键Alt+C会引起KeyDown事件和Click事件。运行代码的时候可以取消KeyDown事件测试。
C#范例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace CheckBoxDemo
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
CheckBox checkBox = new CheckBox();
checkBox.IsThreeState = true;
checkBox.BorderBrush = Brushes.DarkRed;
checkBox.Background = Brushes.LightSkyBlue;
checkBox.BorderThickness = new Thickness(2);
checkBox.HorizontalAlignment = HorizontalAlignment.Center;
checkBox.VerticalAlignment = VerticalAlignment.Center;
checkBox.HorizontalContentAlignment = HorizontalAlignment.Center;
checkBox.Content = "_CheckBoxTest";
checkBox.Indeterminate += CheckBox_Indeterminate;
checkBox.Checked += CheckBox_Checked;
checkBox.Unchecked += CheckBox_Unchecked;
checkBox.Click += CheckBox_Click;
//checkBox.KeyDown += CheckBox_KeyDown;
((this as Window).Content as Grid).Children.Add(checkBox);
}
private void CheckBox_Indeterminate(object sender, RoutedEventArgs e)
{
MessageBox.Show((sender as CheckBox).IsChecked.ToString());
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
MessageBox.Show((sender as CheckBox).IsChecked.ToString());
}
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
MessageBox.Show((sender as CheckBox).IsChecked.ToString());
}
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("CheckBox is Clicked");
}
private void CheckBox_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show("CCheckBox_KeyDown");
}
}
}