通过


KeyBinding 类

定义

将 a KeyGesture 绑定到 RoutedCommand (或其他 ICommand 实现)。

public ref class KeyBinding : System::Windows::Input::InputBinding
public class KeyBinding : System.Windows.Input.InputBinding
type KeyBinding = class
    inherit InputBinding
Public Class KeyBinding
Inherits InputBinding
继承
继承

示例

以下示例创建一个 KeyBinding 并将其添加到 InputBindingCollection 根窗口。

<Window.InputBindings>
  <KeyBinding Command="ApplicationCommands.Open"
              Gesture="CTRL+R" />
</Window.InputBindings>
// Creating a KeyBinding between the Open command and Ctrl-R
KeyBinding OpenCmdKeyBinding = new KeyBinding(
    ApplicationCommands.Open, 
    Key.R, 
    ModifierKeys.Control);

this.InputBindings.Add(OpenCmdKeyBinding);
' Creating a KeyBinding between the Open command and Ctrl-R
Dim OpenCmdKeyBinding As New KeyBinding(ApplicationCommands.Open, Key.R, ModifierKeys.Control)

Me.InputBindings.Add(OpenCmdKeyBinding)

注解

KeyBinding将 a KeyGesture 与 aICommand(如 aRoutedCommand)相关联。 RoutedCommand 是 WPF 命令系统的接口的主要实现 ICommand 。 一般情况下,执行命令时 KeyGesture 调用命令,尽管命令行为受命令特定因素(如 CanExecute 值)的影响。 有关命令的详细信息,请参阅 命令概述

除了函数键和数字键盘键之外,有效 KeyGesture 必须正好包含一 Key 个或多个 ModifierKeys。 函数键和数字键盘键不需要修饰键才能有效 KeyGesture。 可以通过 XAML 或代码指定无效 KeyGesture 的关联手势和 KeyBinding 无效的手势。 例如,没有验证会阻止创建和绑定 KeyGesture 仅包含非功能键或仅修饰符但不包含键的验证。 KeyBinding此类永远不会尝试调用其关联的命令。

KeyBinding 可扩展应用程序标记语言(XAML)中定义时,有两种方法可以指定 KeyGesture。 在 XAML 中建立的第一 KeyBinding 种方法是定义 Gesture 元素的属性 KeyBinding ,该属性使语法能够将键和修饰符指定为单个字符串,例如“CTRL+P”。 第二种方法是定义 Key 元素的属性和 Modifiers 属性 KeyBinding 。 设置这 KeyGesture 两种方法都是等效的,并修改相同的基础对象,但如果同时使用这两种方法,将发生冲突。 在设置属性KeyModifiersGesture属性时,最后定义的属性将用于该KeyGesture属性。 在某些情况下,例如,最后一 Key 组将只覆盖上一个手势的关键组件,但保留手势的修饰符相同。 一般情况下,建议仅 Gesture 使用 XAML 中的属性;这将避免歧义,提供最简化的语法,并提供最直接的序列化表示形式。

可以在特定对象上或通过在类级别注册 A 来定义 A KeyBindingRegisterClassInputBindingCommandManager 。 定义 a KeyBinding 的最典型方法是在控件模板中,通过声明一个或多个MouseBinding元素KeyBinding在 XAML 中设置InputBindings属性。

构造函数

名称 说明
KeyBinding()

初始化 KeyBinding 类的新实例。

KeyBinding(ICommand, Key, ModifierKeys)

使用指定的和指定的ICommandKey实例初始化类的新实例,该ModifierKeys实例KeyBinding将转换为一个 KeyGesture

KeyBinding(ICommand, KeyGesture)

使用指定的ICommandKeyGesture. 初始化类的新实例KeyBinding

字段

名称 说明
KeyProperty

标识 Key 依赖属性。

ModifiersProperty

标识 Modifiers 依赖属性。

属性

名称 说明
CanFreeze

获取一个值,该值指示是否可以使对象不可修改。

(继承自 Freezable)
Command

获取或设置 ICommand 与此输入绑定关联的项。

(继承自 InputBinding)
CommandParameter

获取或设置特定命令的特定于命令的数据。

(继承自 InputBinding)
CommandTarget

获取或设置命令的目标元素。

(继承自 InputBinding)
DependencyObjectType

获取包装 DependencyObjectType 此实例的 CLR 类型。

(继承自 DependencyObject)
Dispatcher

获取与此DispatcherDispatcherObject关联的值。

(继承自 DispatcherObject)
Gesture

获取或设置与此关联的 KeyBinding手势。

IsFrozen

获取一个值,该值指示对象当前是否可修改。

(继承自 Freezable)
IsSealed

获取一个值,该值指示此实例当前是否密封(只读)。

(继承自 DependencyObject)
Key

获取或设置Key与此KeyBinding关联的项KeyGesture

Modifiers

获取或设置ModifierKeys与此KeyBinding关联的项KeyGesture

方法

名称 说明
CheckAccess()

确定调用线程是否有权访问此 DispatcherObject权限。

(继承自 DispatcherObject)
ClearValue(DependencyProperty)

清除属性的本地值。 要清除的属性由 DependencyProperty 标识符指定。

(继承自 DependencyObject)
ClearValue(DependencyPropertyKey)

清除只读属性的本地值。 要清除的属性由一个 DependencyPropertyKey.

(继承自 DependencyObject)
Clone()

创建对象的值的深层副本的可修改克隆 Freezable。 复制对象的依赖属性时,此方法复制表达式(可能不再解析),但不会复制动画或其当前值。

(继承自 Freezable)
CloneCore(Freezable)

复制指定对象的属性的基值(非动画值)。

(继承自 InputBinding)
CloneCurrentValue()

使用其当前值创建可修改的 Freezable 克隆(深层副本)。

(继承自 Freezable)
CloneCurrentValueCore(Freezable)

复制指定对象的属性的当前值。

(继承自 InputBinding)
CoerceValue(DependencyProperty)

强制指定依赖属性的值。 这是通过调用中调用依赖属性CoerceValueCallback的属性元数据中指定的任何DependencyObject函数来实现的。

(继承自 DependencyObject)
CreateInstance()

初始化 Freezable 类的新实例。

(继承自 Freezable)
CreateInstanceCore()

创建 . 的 KeyBinding实例。

Equals(Object)

确定提供的 DependencyObject 是否等效于当前 DependencyObject

(继承自 DependencyObject)
Freeze()

使当前对象不可修改,并将其 IsFrozen 属性设置为 true

(继承自 Freezable)
FreezeCore(Boolean)

Freezable使对象不可修改,或测试是否可以使其不可修改。

(继承自 Freezable)
GetAsFrozen()

使用基(非动画化)属性值创建冻结的副本 Freezable。 由于副本已冻结,因此引用复制任何冻结的子对象。

(继承自 Freezable)
GetAsFrozenCore(Freezable)

使实例成为使用基属性(非动画化)属性值指定的 Freezable 冻结克隆。

(继承自 InputBinding)
GetCurrentValueAsFrozen()

创建使用当前属性值的 Freezable 冻结副本。 由于副本已冻结,因此引用复制任何冻结的子对象。

(继承自 Freezable)
GetCurrentValueAsFrozenCore(Freezable)

使当前实例成为指定的 Freezable冻结克隆。 如果对象具有动画依赖属性,则复制其当前动画值。

(继承自 InputBinding)
GetHashCode()

获取此 DependencyObject代码的哈希代码。

(继承自 DependencyObject)
GetLocalValueEnumerator()

创建一个专用枚举器,用于确定哪些依赖项属性具有本地 DependencyObject设置的值。

(继承自 DependencyObject)
GetType()

获取当前实例的 Type

(继承自 Object)
GetValue(DependencyProperty)

返回此实例 DependencyObject上的依赖属性的当前有效值。

(继承自 DependencyObject)
InvalidateProperty(DependencyProperty)

重新评估指定依赖属性的有效值。

(继承自 DependencyObject)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
OnChanged()

修改当前 Freezable 对象时调用。

(继承自 Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

此成员支持 Windows Presentation Foundation (WPF) 基础结构,不应直接从代码使用。

(继承自 Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject)

确保为 DependencyObjectType 刚刚设置的数据成员建立适当的上下文指针。

(继承自 Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

每当更新此 DependencyObject 属性上任何依赖属性的有效值时调用。 在事件数据中报告更改的特定依赖属性。

(继承自 DependencyObject)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

重写要DependencyObject调用的任何Changed处理程序的OnPropertyChanged(DependencyPropertyChangedEventArgs)实现,以响应类型的Freezable更改依赖项属性。

(继承自 Freezable)
ReadLocalValue(DependencyProperty)

返回依赖属性的本地值(如果存在)。

(继承自 DependencyObject)
ReadPreamble()

确保 Freezable 从有效线程访问该对象。 继承者 Freezable 必须在读取非依赖属性的数据成员的任何 API 的开头调用此方法。

(继承自 Freezable)
SetCurrentValue(DependencyProperty, Object)

设置依赖项属性的值,而不更改其值源。

(继承自 DependencyObject)
SetValue(DependencyProperty, Object)

设置依赖属性的本地值,由依赖属性标识符指定。

(继承自 DependencyObject)
SetValue(DependencyPropertyKey, Object)

设置只读依赖属性的本地值,由 DependencyPropertyKey 依赖属性的标识符指定。

(继承自 DependencyObject)
ShouldSerializeProperty(DependencyProperty)

返回一个值,该值指示序列化进程是否应序列化所提供的依赖属性的值。

(继承自 DependencyObject)
ToString()

返回一个表示当前对象的字符串。

(继承自 Object)
VerifyAccess()

强制调用线程有权访问此 DispatcherObject权限。

(继承自 DispatcherObject)
WritePostscript()

Changed为该事件Freezable引发并调用其OnChanged()方法。 派生自 Freezable 的类应在修改未存储为依赖属性的类成员的任何 API 末尾调用此方法。

(继承自 Freezable)
WritePreamble()

验证 Freezable 是否未冻结,以及是否正在从有效的线程上下文访问它。 Freezable 继承者应在写入非依赖属性的数据成员的任何 API 的开头调用此方法。

(继承自 Freezable)

活动

名称 说明
Changed

修改它包含的对象时 Freezable 发生。

(继承自 Freezable)

适用于

另请参阅