WPF基础五:UI②内容元素Button

Button


Control类

字段

名称备注权限
BackgroundProperty标识 Background 依赖项属性public
BorderBrushProperty标识 BorderBrush 依赖项属性public
BorderThicknessProperty标识 BorderThickness 依赖项属性public
FontFamilyProperty标识 FontFamily 依赖项属性public
FontSizeProperty标识 FontSize 依赖项属性public
FontStretchProperty标识 FontStretch 依赖项属性public
FontStyleProperty标识 FontStyle 依赖项属性public
FontWeightProperty标识 FontWeight 依赖项属性public
ForegroundProperty标识 Foreground 依赖项属性public
HorizontalContentAlignmentProperty标识 HorizontalContentAlignment 依赖项属性public
IsTabStopProperty标识 IsTabStop 依赖项属性public
MouseDoubleClickEvent标识 MouseDoubleClick 路由事件public
PaddingProperty标识 Padding 依赖项属性public
PreviewMouseDoubleClickEvent标识 PreviewMouseDoubleClick 路由事件public
TabIndexProperty标识 TabIndex 依赖项属性public
TemplateProperty标识 Template 依赖项属性public
VerticalContentAlignmentProperty标识 VerticalContentAlignment 依赖项属性public

 

属性

名称备注权限
Background获取或设置一个用于描述控件背景的画笔public
BorderBrush获取或设置一个用于描述控件的边框背景的画笔public
BorderThickness获取或设置控件的边框宽度public
FontFamily获取或设置控件的字体系列public
FontSize获取或设置字号public
FontStretch获取或设置字体在屏幕上紧缩或加宽的程度public
FontStyle获取或设置字体样式public
FontWeight获取或设置指定字体的粗细public
Foreground获取或设置一个用于描述前景色的画笔public
HandlesScrolling获取一个值,该值指示控件是否支持滚动protected
HorizontalContentAlignment获取或设置控件内容的水平对齐方式public
IsTabStop获取或设置一个值,该值指示是否将某个控件包含在 Tab 导航中public
Padding获取或设置控件内部的填充边距public
TabIndex获取或设置一个值,该值决定在用户使用 Tab 键在控件中导航时元素接收焦点的顺序public
Template获取或设置控件模板public
VerticalContentAlignment获取或设置控件内容的垂直对齐方式public

 

方法

名称备注权限
ArrangeOverride调用以排列 Control 对象的内容并调整其大小protected
MeasureOverride调用以重新测量控件protected
OnMouseDoubleClick引发 MouseDoubleClick 路由事件protected
OnPreviewMouseDoubleClick引发 PreviewMouseDoubleClick 路由事件protected
OnTemplateChanged在控件模板发生更改时调用protected
ToString返回 Control 对象的字符串表示形式public

 

事件

名称备注权限
MouseDoubleClick在双击或多次单击鼠标按钮时发生public
PreviewMouseDoubleClick在用户单击鼠标按钮两次或更多次时发生public

ContentControl类

表示用户界面 (UI) 元素的基类,这些元素使用 ControlTemplate 来定义其外观。

ContentControl可以包含任何类型的公共语言运行时对象 (例如字符串或 DateTime 对象) 或 UIElement 对象 (如 Rectangle 或 Panel) 。 这使你能够向控件(例如ButtonCheckBox)添加丰富的内容  

ContentControl具有有限的默认样式。 如果要增强控件的外观,可以创建新的 DataTemplate 。 有关详细信息,请参阅 数据模板化概述。 另一种典型方案是使用 ContentControl 来显示有关控件中选定项的详细信息 ItemsControl 。 有关详细信息,请参阅 如何:绑定到集合并基于选择显示信息

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

 

字段

名称备注权限
ContentProperty标识 Content 依赖项属性public
ContentStringFormatProperty标识 ContentStringFormat 依赖项属性public
ContentTemplateProperty标识 ContentTemplate 依赖项属性public
ContentTemplateSelectorProperty标识 ContentTemplateSelector 依赖项属性public
HasContentProperty标识 HasContent 依赖项属性public

 

属性

名称备注权限
Content获取或设置 ContentControl 的内容public
ContentStringFormat获取或设置一个撰写字符串,该字符串指定如果 Content 属性显示为字符串,应如何设置该属性的格式public
ContentTemplate获取或设置用于显示 ContentControl 内容的数据模板public
ContentTemplateSelector获取或设置一个模板选择器,以使应用程序编写器能够提供自定义模板选择逻辑public
HasContent获取一个值,该值指示 ContentControl 是否包含内容public
LogicalChildren获取内容控件的逻辑子元素的枚举数protected

 

方法

名称备注权限
AddChild将指定对象作为 ContentControl 的子级添加protected
AddText将指定文本字符串添加到 ContentControl 中protected
OnContentChanged当 Content 属性更改时调用protected
OnContentStringFormatChanged当 ContentStringFormat 属性更改时发生protected
OnContentTemplateChanged当 ContentTemplate 属性更改时调用protected
OnContentTemplateSelectorChanged当 ContentTemplateSelector 属性更改时调用protected
ShouldSerializeContent指示是否应使 Content 属性持久化public

 

接口

名称备注
IAddChild.AddChild此类型或成员支持 Windows Presentation Foundation (WPF) 基础结构,并且不应在代码中直接使用
IAddChild.AddText此类型或成员支持 Windows Presentation Foundation (WPF) 基础结构,并且不应在代码中直接使用

ButtonBase

表示所有 Button 控件的基类。

 Click 处理在用户单击时响应 ButtonBase 的事件。 用户可以通过使用 AccessText 或在控件具有焦点时按 enter 键或空格键来引发 Click 事件。 当用户按空格键时,控件将设置 IsPressed 为 true 并捕获鼠标。 因此,控件将引发鼠标事件,例如 MouseEnter 和 IsMouseDirectlyOverChanged 。 请注意,使用 AccessText 或 ENTER 不会更改 IsPressed 或捕获鼠标,但会引发 Click 事件。

将 ButtonBase AcceptsReturn 附加属性设置为 true 。

ButtonBase 将 IsInputMethodEnabled 属性设置为 false

ButtonBase是 ContentControl ,这意味着它可以包含任何类型的单个对象 (例如字符串、图像或面板) 。 有关更多信息,请参见 ContentControl 类。

 

字段

名称备注权限
ClickEvent标识 Click 路由事件public
ClickModeProperty标识 ClickMode 依赖项属性public
CommandParameterProperty标识 CommandParameter 依赖项属性public
CommandProperty标识路由的 Command 依赖属性public
CommandTargetProperty标识 CommandTarget 依赖项属性public
IsPressedProperty标识 IsPressed 依赖项属性public

 

属性

名称备注权限
ClickMode获取或设置 Click 事件何时发生public
Command获取或设置在按下按钮时调用的命令public
CommandParameter获取或设置要传递给 Command 属性的参数public
CommandTarget获取或设置要引发指定命令的元素public
IsEnabledCore获取 IsEnabled 属性的值protected
IsPressed获取一个值,该值指示 ButtonBase 当前是否已被激活public

 

方法

名称备注权限
OnAccessKey在调用此控件的 AccessKey 时响应protected
OnClick引发 Click 路由事件protected
OnIsPressedChanged当 IsPressed 属性更改时调用protected
OnKeyDown为在此控件有焦点的情况下用户按任意键时发生的 KeyDown 路由事件提供类处理protected
OnKeyUp为在此控件有焦点的情况下用户释放任意键时发生的 KeyUp 路由事件提供类处理protected
OnLostKeyboardFocus在元素失去键盘焦点时调用protected
OnLostMouseCapture提供路由事件 LostMouseCapture 的类处理,该事件在此控件不再接收鼠标事件消息时发生protected
OnMouseEnter为当鼠标进入此控件时发生的 ClickMode 路由事件提供类处理protected
OnMouseLeave为当鼠标离开元素时发生的 MouseLeave 路由事件提供类处理protected
OnMouseLeftButtonDown为鼠标指针位于此控件上并按下鼠标左键时发生的 MouseLeftButtonDown 路由事件提供类处理protected
OnMouseLeftButtonUp为鼠标指针位于此控件上并释放鼠标左键时发生的 MouseLeftButtonUp 路由事件提供类处理protected
OnMouseMove提供当鼠标指针位于此元素上并且移动鼠标指针发生的MouseMove 路由事件的类处理protected
OnRenderSizeChanged当控件的呈现大小更改时调用protected

事件

名称备注权限
Click在单击 Button 时发生public

Button

表示 Windows 按钮控件,该按钮对 Click 事件做出反应。

Button类直接从 System.Windows.Controls.Primitives.ButtonBase 类继承。

内容模型: Button 派生自 ContentControl 。 它的内容属性为 Content 。

 ButtonBase.Click 处理在用户单击时响应Button 的事件 。

OnMouseLeftButtonDown方法将 MouseLeftButtonDown 事件标记为已处理。 若要响应 MouseLeftButtonDown 事件,请将事件处理程序附加到 PreviewMouseLeftButtonDown 事件,或将 AddHandler(RoutedEvent, Delegate, Boolean) handledEventsToo 设置为时调用 true 。

若要对多个控件应用相同的属性设置 Button ,请使用 Style 属性。 您可以修改 ControlTemplate 默认值,为控件指定独特的外观。 有关创 ControlTemplate 建的详细信息,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于的部分和状态,请 Button 参阅 按钮样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。

 

字段

名称备注权限
IsCancelProperty标识 IsCancel 依赖项属性public
IsDefaultedProperty标识 IsDefaulted 依赖项属性public
IsDefaultProperty标识 IsDefault 依赖项属性public

 

属性

名称备注权限
IsCancel获取或设置一个值,该值指示 Button 是否是一个“取消”按钮。 用户可以通过按 ESC 键来激活 Cancel 按钮。public
IsDefault获取或设置一个值,该值指示 Button 是否是一个默认按钮。 用户可以通过按 ENTER 键调用默认按钮。public
IsDefaulted获取或设置一个值,该值指示 Button 是否是在用户按下 ENTER 键时所激活的按钮。public

 

方法

名称备注权限
OnClick单击 Button 时调用protected
OnCreateAutomationPeerButtonAutomationPeer为此控件创建一个适用于 WPF 基础结构的一部分protected

ButtonBase.ClickMode

public System.Windows.Controls.ClickMode ClickMode { get; set; }

获取或设置 Click 事件何时发生,默认值是 Release

public enum ClickMode:

 
Hover2

指定当鼠标悬停在控件上时应引发 Click 事件。

Press1

指定当按下按钮时应引发 Click 事件。

Release0

指定当按下和释放按钮时应引发 Click 事件。

 

ButtonBase.Command

public System.Windows.Input.ICommand Command { get; set; }

获取或设置在按下按钮时调用的命令。默认值是 null

XAML 属性用法

<object Command="commandName"/>

例:

<Window
    x:Class="ButtonDemo.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:ButtonDemo"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <Window.CommandBindings>
        <CommandBinding Command="ApplicationCommands.Properties" Executed="MyCommand"/>
    </Window.CommandBindings>
    <Grid x:Name="grid1">
        <Button x:Name="Btn1"
              BorderBrush="Black" BorderThickness="1" 
            Width="200"
            Height="50"            
            ClickMode="Press"
            Content="_Btn1"
            Command="ApplicationCommands.Properties"
            CommandTarget="{Binding ElementName=grid1}"      />     
    </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.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 ButtonDemo
{
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
        }

        private void MyCommand(object sender, RoutedEventArgs e)
        { 
            MessageBox.Show("sender:"+sender.ToString()+ "\ne.Source:"+e.Source.ToString()+ "\nOriginalSource:" + e.OriginalSource.ToString());
        }
    }
}

ButtonBase.CommandParameter

public object CommandParameter { get; set; }

获取或设置要传递给 Command 属性的参数。

XAML 属性用法

<object CommandParameter="commandParameter" />
<Window
    x:Class="ButtonDemo.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:ButtonDemo"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <Grid x:Name="grid1">
        <Grid.CommandBindings>
            <CommandBinding Command="ApplicationCommands.Properties" Executed="MyCommand"/>
        </Grid.CommandBindings>
        <Button x:Name="Btn1"
              BorderBrush="Black" BorderThickness="1" 
            Width="200"
            Height="50"            
            ClickMode="Press"
            Content="_Btn1"
            Command="ApplicationCommands.Properties"
            CommandParameter="传递参数"
            CommandTarget="{Binding ElementName=Btn1}"
            IsCancel="False"
            IsDefault="False"
            />
        <!-- IsEnabledCore="True"    Click="Button_Click"  IsEnabledCore IsDefaulted -->        
    </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.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 ButtonDemo
{
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent(); 
        }

        private void MyCommand(object sender, ExecutedRoutedEventArgs e)
        { 
            MessageBox.Show("sender:"+sender.ToString()+ "\ne.Source:" + e.Source.ToString()+ "\nOriginalSource:" + e.OriginalSource.ToString()+ "\nCommandParameter:"+e.Parameter.ToString());
        }
    }
}

 

ButtonBase.CommandTarget

public System.Windows.IInputElement CommandTarget { get; set; }

获取或设置要引发指定命令的元素。

XAML 属性用法

<ButtonBase CommandTarget="{Binding ElementName= elementName }"/>

上述代码更改:CommandTarget="{Binding ElementName=Btn1}" 

上述代码更改,并移动到Grid下:       

<Grid.CommandBindings>
            <CommandBinding Command="ApplicationCommands.Properties" Executed="MyCommand"/>
 </
Grid.CommandBindings>

C#

<Window
    x:Class="ButtonDemo.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:ButtonDemo"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <Grid x:Name="grid1">
        <Button x:Name="Btn1"
              BorderBrush="Black" BorderThickness="1" 
            Width="200"
            Height="50"            
            ClickMode="Press"
            Content="_Btn1"
            Command="ApplicationCommands.Help"
            CommandParameter="传递参数"
            CommandTarget="{Binding ElementName=Btn1}"
            IsCancel="False"
            IsDefault="False"
            />       
    </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.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 ButtonDemo
{
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();

            CommandBinding customCommandBinding = new CommandBinding(ApplicationCommands.Help, MyCommand, null);

            // attach CommandBinding to root window
            (this.Content as Grid).CommandBindings.Add(customCommandBinding);
        }
   
        private void MyCommand(object sender, ExecutedRoutedEventArgs e)
        { 
            MessageBox.Show("sender:"+sender.ToString()+ "\ne.Source:" + e.Source.ToString()+ "\nOriginalSource:" + e.OriginalSource.ToString()+ "\nCommandParameter:"+e.Parameter.ToString());
        }
    }
}

 

ButtonBase.IsPressed

public bool IsPressed { get; protected set; }

获取一个值,该值指示 ButtonBase 当前是否已被激活。

示例

<Style x:Key="Triggers" TargetType="Button">
  <Style.Triggers>
    <Trigger Property="IsMouseOver" Value="true">
      <Setter Property = "Background" Value="Red"/>
    </Trigger>
    <Trigger Property="IsPressed" Value="true">
      <Setter Property = "Foreground" Value="Green"/>
    </Trigger>
  </Style.Triggers>
</Style>

ButtonBase.OnAccessKey(AccessKeyEventArgs)

protected override void OnAccessKey (System.Windows.Input.AccessKeyEventArgs e);

在调用此控件的 AccessKey 时响应。

 

ButtonBase.OnClick

protected virtual void OnClick ();

引发 Click 路由事件。

控件 Click 通过调用来引发事件 RaiseEvent 。 有关详细信息,请参阅路由事件概述

 

ButtonBase.OnIsPressedChanged(DependencyPropertyChangedEventArgs)

protected virtual void OnIsPressedChanged (System.Windows.DependencyPropertyChangedEventArgs e);

当 IsPressed 属性更改时调用。

 

ButtonBase.OnKeyDown(KeyEventArgs) 

protected override void OnKeyDown (System.Windows.Input.KeyEventArgs e);

为在此控件有焦点的情况下用户按任意键时发生的 KeyDown 路由事件提供类处理。

此实现通过将事件数据的Handled属性设置为true把KeyDown事件标记为handled,当ClickMode未设置为Hover并且满足以下情况之一时:

  • 用户按空格键。
  • 用户按 ENTER 键, 此控件的AcceptsReturn为  true

在所有其他情况下,此实现不会更改KeyDown 事件数据的 Handled 状态(Handled 属性)。

如果重写 OnKeyDown(KeyEventArgs) ,请始终在实现中调用基实现 OnKeyDown(KeyEventArgs) 。 

 

ButtonBase.OnKeyUp(KeyEventArgs) 

protected override void OnKeyUp (System.Windows.Input.KeyEventArgs e);

为在此控件有焦点的情况下用户释放任意键时发生的 KeyUp 路由事件提供类处理。

This implementation marks the KeyUp event as handled by setting the Handled property of the event data to true when the user releases the SPACEBAR. Otherwise, this implementation does not change the handled state (the Handled property) of the KeyUp event data.

如果重写 OnKeyUp(KeyEventArgs) ,请始终在实现中调用基实现 OnKeyUp(KeyEventArgs) 。

 

ButtonBase.OnLostKeyboardFocus(KeyboardFocusChangedEventArgs)

protected override void OnLostKeyboardFocus (System.Windows.Input.KeyboardFocusChangedEventArgs e);

在元素失去键盘焦点时调用。

 

ButtonBase.OnLostMouseCapture(MouseEventArgs) 

protected override void OnLostMouseCapture (System.Windows.Input.MouseEventArgs e);

提供路由事件 LostMouseCapture 的类处理,该事件在此控件不再接收鼠标事件消息时发生。

此实现不会更改LostMouseCapture事件数据的已处理状态(Handled属性)。

如果重写OnLostMouseCapture(MouseEventArgs),请始终在OnLostMouseCapture(MouseEventArgs)实现中调用基本实现。

 

ButtonBase.OnMouseEnter(MouseEventArgs) 

protected override void OnMouseEnter (System.Windows.Input.MouseEventArgs e);

为当鼠标进入此控件时发生的 ClickMode 路由事件提供类处理。

当 ClickMode 设置为时 Hover ,此实现通过将 MouseEnter 事件数据的 Handled 属性设置为true来将事件标记为已处理 ,并引发 Click 事件。

如果重写 OnMouseEnter(MouseEventArgs) ,请始终在实现中调用基实现 OnMouseEnter(MouseEventArgs) 。

 

ButtonBase.OnMouseLeave(MouseEventArgs)

protected override void OnMouseLeave (System.Windows.Input.MouseEventArgs e);

为当鼠标离开元素时发生的 MouseLeave 路由事件提供类处理。

如果重写 OnMouseLeave(MouseEventArgs) ,请始终在实现中调用基实现 OnMouseLeave(MouseEventArgs) 。

 

ButtonBase.OnMouseLeftButtonDown(MouseButtonEventArgs) 

protected override void OnMouseLeftButtonDown (System.Windows.Input.MouseButtonEventArgs e);

为鼠标指针位于此控件上并按下鼠标左键时发生的 MouseLeftButtonDown 路由事件提供类处理。

如果重写 OnMouseLeftButtonDown(MouseButtonEventArgs) ,请始终在实现中调用基实现 OnMouseLeftButtonDown(MouseButtonEventArgs) 。 

 

ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs)

protected override void OnMouseLeftButtonUp (System.Windows.Input.MouseButtonEventArgs e);

为鼠标指针位于此控件上并释放鼠标左键时发生的 MouseLeftButtonUp 路由事件提供类处理。

如果重写 OnMouseLeftButtonUp(MouseButtonEventArgs) ,请始终在实现中调用基实现 OnMouseLeftButtonUp(MouseButtonEventArgs) 。

 

ButtonBase.OnMouseMove(MouseEventArgs)

protected override void OnMouseMove (System.Windows.Input.MouseEventArgs e);

提供当鼠标指针位于此元素上并且移动鼠标指针发生的MouseMove 路由事件的类处理。

如果重写 OnMouseMove(MouseEventArgs) ,请始终在实现中调用基实现 OnMouseMove(MouseEventArgs) 。

 

ButtonBase.OnRenderSizeChanged(SizeChangedInfo) 

protected internal override void OnRenderSizeChanged (System.Windows.SizeChangedInfo sizeInfo);

当控件的呈现大小更改时调用。

重写的 OnRenderSizeChanged 方法 UIElement 。

 

ButtonBase.Click

public event System.Windows.RoutedEventHandler Click;

在单击 Button 时发生。

 

Button.IsCancel

public bool IsCancel { get; set; }

获取或设置一个值,该值指示 Button 是否是一个“取消”按钮。 用户可以通过按 ESC 键来激活 Cancel 按钮。

示例

<Button Name="btnCancel" IsCancel="true" Click="OnClickCancel">Cancel</Button>

 

Button.IsDefault

public bool IsDefault { get; set; }

获取或设置一个值,该值指示 Button 是否是一个默认按钮。 用户可以通过按 ENTER 键调用默认按钮。

示例

<Button Name="btnDefault" IsDefault="true" Click="OnClickDefault">OK</Button>

 

Button.IsDefaulted

public bool IsDefaulted { get; }

获取或设置一个值,该值指示 Button 是否是在用户按下 ENTER 键时所激活的按钮。

示例

if (btnDefault.IsDefault == true)
{
    btnDefault.Content = "This is the default button.";
}
if (btnDefault.IsDefaulted == true)
{
    btnDefault.Content = "The button is defaulted.";
}

 

Button.OnClick

protected override void OnClick ();

单击 Button 时调用。

 

Button.OnCreateAutomationPeer

protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer ();

ButtonAutomationPeer为此控件创建一个适用于 WPF 基础结构的一部分。

 

 


范例:

<Window
    x:Class="ButtonDemo.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:ButtonDemo"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <Window.Resources>
        <Style TargetType="Button">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="FontSize" Value="20" />
                </Trigger>
                <Trigger Property="IsPressed" Value="True">
                    <Setter Property="FontSize" Value="30" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <Grid>
        <Button
              BorderBrush="Black" BorderThickness="1" 
            Width="200"
            Height="50"
            Click="Button_Click"
            ClickMode="Press"
            Content="_Btn1" />
    </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.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 ButtonDemo
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            //MessageBox.Show("Btn1 is pressed");
        }
    }
}

运行如下图:

鼠标移动到按钮上后如下图:

按下按钮时:

Content="_Btn1"   快捷键Alt+B相当于Button的Click


 

C#代码

<Window
    x:Class="ButtonDemo.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:ButtonDemo"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <Window.Resources>
        <Style TargetType="Button">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="FontSize" Value="20" />
                </Trigger>
                <Trigger Property="IsPressed" Value="True">
                    <Setter Property="FontSize" Value="30" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <Grid>
    </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.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 ButtonDemo
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Button button = new Button();
            button.Content = "Btn1";
            button.Width = 200;
            button.Height = 50;
            button.BorderBrush = Brushes.Black;
            button.BorderThickness = new Thickness(1);
            button.ClickMode = ClickMode.Press;
            button.Click += Button_Click;

            ((this as Window).Content as Grid).Children.Add(button);
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Btn1 is pressed");
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值