InputBinding Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет привязку между InputGesture командой и ней. Эта команда потенциально является .RoutedCommand
public ref class InputBinding : System::Windows::DependencyObject, System::Windows::Input::ICommandSource
public ref class InputBinding : System::Windows::Freezable, System::Windows::Input::ICommandSource
public class InputBinding : System.Windows.DependencyObject, System.Windows.Input.ICommandSource
public class InputBinding : System.Windows.Freezable, System.Windows.Input.ICommandSource
type InputBinding = class
inherit DependencyObject
interface ICommandSource
type InputBinding = class
inherit Freezable
interface ICommandSource
Public Class InputBinding
Inherits DependencyObject
Implements ICommandSource
Public Class InputBinding
Inherits Freezable
Implements ICommandSource
- Наследование
- Наследование
- Производный
- Реализации
Примеры
В следующем примере показано, как использовать a KeyBinding для привязки KeyGesture к команде Open . При выполнении жеста ключа вызывается команда Open.
<Window.InputBindings>
<KeyBinding Key="B"
Modifiers="Control"
Command="ApplicationCommands.Open" />
</Window.InputBindings>
В следующих примерах показано, как привязать пользовательскую команду к InputBinding объектам. В этих примерах создается приложение, позволяющее пользователю изменить цвет фона, выполнив одно из следующих действий:
Нажатие кнопки.
Нажмите клавиши CTRL+C.
Щелкните правой кнопкой мыши элемент StackPanel (за пределами ListBox).
В первом примере создается класс с именем SimpleDelegateCommand. Этот класс принимает делегат, чтобы объект, создающий команду, может определить действие, возникающее при выполнении команды.
SimpleDelegateCommand также определяет свойства, определяющие, какие ключи и входные данные мыши вызывают команду.
GestureKey и GestureModifier укажите ввод клавиатуры; MouseGesture указывает входные данные мыши.
// Create a class that implements ICommand and accepts a delegate.
public class SimpleDelegateCommand : ICommand
{
// Specify the keys and mouse actions that invoke the command.
public Key GestureKey { get; set; }
public ModifierKeys GestureModifier { get; set; }
public MouseAction MouseGesture { get; set; }
Action<object> _executeDelegate;
public SimpleDelegateCommand(Action<object> executeDelegate)
{
_executeDelegate = executeDelegate;
}
public void Execute(object parameter)
{
_executeDelegate(parameter);
}
public bool CanExecute(object parameter) { return true; }
public event EventHandler CanExecuteChanged;
}
' Create a class that implements ICommand and accepts a delegate.
Public Class SimpleDelegateCommand
Implements ICommand
' Specify the keys and mouse actions that invoke the command.
Private _GestureKey As Key
Private _GestureModifier As ModifierKeys
Private _MouseGesture As MouseAction
Public Property GestureKey() As Key
Get
Return _GestureKey
End Get
Set(ByVal value As Key)
_GestureKey = value
End Set
End Property
Public Property GestureModifier() As ModifierKeys
Get
Return _GestureModifier
End Get
Set(ByVal value As ModifierKeys)
_GestureModifier = value
End Set
End Property
Public Property MouseGesture() As MouseAction
Get
Return _MouseGesture
End Get
Set(ByVal value As MouseAction)
_MouseGesture = value
End Set
End Property
Private _executeDelegate As Action(Of Object)
Public Sub New(ByVal executeDelegate As Action(Of Object))
_executeDelegate = executeDelegate
End Sub
Public Sub Execute(ByVal parameter As Object) _
Implements ICommand.Execute
_executeDelegate(parameter)
End Sub
Public Function CanExecute(ByVal parameter As Object) As Boolean _
Implements ICommand.CanExecute
Return True
End Function
Public Event CanExecuteChanged As EventHandler _
Implements ICommand.CanExecuteChanged
End Class
В следующем примере создается и инициализируется ColorChangeCommandобъект , который является SimpleDelegateCommand. В примере также определяется метод, который выполняется при вызове команды и задает GestureKeyGestureModifierсвойства , а MouseGesture также свойства. Приложение вызовет InitializeCommand метод при запуске программы, например в конструкторе объекта Window.
public SimpleDelegateCommand ChangeColorCommand
{
get { return changeColorCommand; }
}
private SimpleDelegateCommand changeColorCommand;
private void InitializeCommand()
{
originalColor = this.Background;
changeColorCommand = new SimpleDelegateCommand(x => this.ChangeColor(x));
DataContext = this;
changeColorCommand.GestureKey = Key.C;
changeColorCommand.GestureModifier = ModifierKeys.Control;
ChangeColorCommand.MouseGesture = MouseAction.RightClick;
}
private Brush originalColor, alternateColor;
// Switch the Background color between
// the original and selected color.
private void ChangeColor(object colorString)
{
if (colorString == null)
{
return;
}
Color newColor =
(Color)ColorConverter.ConvertFromString((String)colorString);
alternateColor = new SolidColorBrush(newColor);
if (this.Background == originalColor)
{
this.Background = alternateColor;
}
else
{
this.Background = originalColor;
}
}
Public ReadOnly Property ChangeColorCommand() As SimpleDelegateCommand
Get
Return _changeColorCommand
End Get
End Property
Private _changeColorCommand As SimpleDelegateCommand
Private originalColor As Brush, alternateColor As Brush
Private Sub InitializeCommand()
originalColor = Me.Background
_changeColorCommand = New SimpleDelegateCommand(Function(x) Me.ChangeColor(x))
DataContext = Me
_changeColorCommand.GestureKey = Key.C
_changeColorCommand.GestureModifier = ModifierKeys.Control
_changeColorCommand.MouseGesture = MouseAction.RightClick
End Sub
' Switch the Background color between
' the original and selected color.
Private Function ChangeColor(ByVal colorString As Object) As Integer
If colorString Is Nothing Then
Return 0
End If
Dim newColor As Color = DirectCast(ColorConverter.ConvertFromString(DirectCast(colorString, [String])), Color)
alternateColor = New SolidColorBrush(newColor)
If Brush.Equals(Me.Background, originalColor) Then
Me.Background = alternateColor
Else
Me.Background = originalColor
End If
Return 0
End Function
Наконец, в следующем примере создается пользовательский интерфейс. В примере добавляется и KeyBinding a MouseBinding в объект StackPanel , содержащий a Button и a ListBox. Когда пользователь выбирает элемент в ListBoxэлементе, он может изменить цвет фона на выбранный цвет. В каждом случае CommandParameter свойство привязано к выбранному элементу в объекте ListBox, и Command свойство привязано к свойству ColorChangeCommand. Свойства KeyBinding.Keyи MouseBinding.MouseAction свойства привязаны к соответствующим свойствам SimpleDelegateCommand класса. KeyBinding.Modifiers
<StackPanel Background="Transparent">
<StackPanel.InputBindings>
<KeyBinding Command="{Binding ChangeColorCommand}"
CommandParameter="{Binding ElementName=colorPicker, Path=SelectedItem}"
Key="{Binding ChangeColorCommand.GestureKey}"
Modifiers="{Binding ChangeColorCommand.GestureModifier}"/>
<MouseBinding Command="{Binding ChangeColorCommand}"
CommandParameter="{Binding ElementName=colorPicker, Path=SelectedItem}"
MouseAction="{Binding ChangeColorCommand.MouseGesture}"/>
</StackPanel.InputBindings>
<Button Content="Change Color"
Command="{Binding ChangeColorCommand}"
CommandParameter="{Binding ElementName=colorPicker, Path=SelectedItem}">
</Button>
<ListBox Name="colorPicker"
Background="Transparent"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<sys:String>Red</sys:String>
<sys:String>Green</sys:String>
<sys:String>Blue</sys:String>
<sys:String>Yellow</sys:String>
<sys:String>Orange</sys:String>
<sys:String>Purple</sys:String>
</ListBox>
</StackPanel>
Комментарии
Вы можете указать, что входные данные пользователя вызывают команду, создав команду InputBinding. Когда пользователь выполняет указанные входные данные, ICommandCommand выполняется значение свойства.
Можно указать, что InputBinding вызывает команду, определяемую объектом, путем создания привязки к свойствам CommandParameterи CommandTarget свойствамCommand. Это позволяет определить пользовательскую команду и связать ее с входными данными пользователя. Дополнительные сведения см. во втором примере в разделе "Примеры".
Можно InputBinding определить на определенном объекте или на уровне класса, зарегистрируя его RegisterClassInputBinding с CommandManagerпомощью объекта.
Сам InputBinding класс не поддерживает использование XAML, так как он не предоставляет открытый конструктор без параметров (существует конструктор без параметров, но он защищен). Однако производные классы могут предоставлять общедоступный конструктор и поэтому могут задавать свойства производного класса, унаследованного от InputBinding использования XAML. Два существующих InputBindingпроизводных класса, которые можно создать в XAML, и могут задавать свойства в XAML KeyBinding и MouseBinding. Типичное свойство в программировании WPF, заданное в XAML, и принимает один или несколько InputBinding объектов в качестве значений является свойством UIElement.InputBindings .
Использование элемента объекта XAML
< inputBindingDerivedClass.../>
Значения XAML
inputBindingDerivedClass Производный InputBinding класс, поддерживающий синтаксис элемента объекта, например KeyBinding или MouseBinding. См. раздел "Замечания".
Конструкторы
| Имя | Описание |
|---|---|
| InputBinding() |
Предоставляет базовую инициализацию для классов, производных от InputBinding. |
| InputBinding(ICommand, InputGesture) |
Инициализирует новый экземпляр класса с помощью указанной InputBinding команды и жеста ввода. |
Поля
| Имя | Описание |
|---|---|
| CommandParameterProperty |
Определяет CommandParameter свойство зависимостей. |
| CommandProperty |
Определяет Command свойство зависимостей. |
| CommandTargetProperty |
Определяет CommandTarget свойство зависимостей. |
Свойства
| Имя | Описание |
|---|---|
| CanFreeze |
Возвращает значение, указывающее, можно ли изменить объект. (Унаследовано от Freezable) |
| Command |
Возвращает или задает связанную ICommand с этой входной привязкой. |
| CommandParameter |
Возвращает или задает данные для конкретной команды. |
| CommandTarget |
Возвращает или задает целевой элемент команды. |
| DependencyObjectType |
Возвращает объект DependencyObjectType , который упаковывает тип СРЕДЫ CLR этого экземпляра. (Унаследовано от DependencyObject) |
| Dispatcher |
Dispatcher Возвращает это DispatcherObject значение, с которым связано. (Унаследовано от DispatcherObject) |
| Gesture |
Возвращает или задает связанную InputGesture с этой входной привязкой. |
| IsFrozen |
Возвращает значение, указывающее, является ли объект изменяемым в настоящее время. (Унаследовано от Freezable) |
| IsSealed |
Возвращает значение, указывающее, запечатан ли этот экземпляр (только для чтения). (Унаследовано от DependencyObject) |
Методы
| Имя | Описание |
|---|---|
| CheckAccess() |
Определяет, имеет ли вызывающий поток доступ к этому DispatcherObject. (Унаследовано от DispatcherObject) |
| ClearValue(DependencyProperty) |
Очищает локальное значение свойства. Свойство для очистки указывается идентификатором DependencyProperty . (Унаследовано от DependencyObject) |
| ClearValue(DependencyPropertyKey) |
Очищает локальное значение свойства только для чтения. Свойство, которое необходимо очистить, задается параметром DependencyPropertyKey. (Унаследовано от DependencyObject) |
| Clone() |
Создает модификаторный клон Freezableобъекта, делая глубокие копии значений объекта. При копировании свойств зависимостей объекта этот метод копирует выражения (которые больше не могут разрешаться), но не анимации или их текущие значения. (Унаследовано от Freezable) |
| CloneCore(Freezable) |
Копирует базовые (не анимированные) значения свойств указанного объекта. |
| CloneCurrentValue() |
Создает модификируемую клон (глубокую копию) текущего Freezable значения. (Унаследовано от Freezable) |
| CloneCurrentValueCore(Freezable) |
Копирует текущие значения свойств указанного объекта. |
| CoerceValue(DependencyProperty) |
Принуждает значение указанного свойства зависимостей. Это достигается путем вызова любой CoerceValueCallback функции, указанной в метаданных свойств для свойства зависимостей, так как он существует при вызове DependencyObject. (Унаследовано от DependencyObject) |
| CreateInstance() |
Инициализирует новый экземпляр класса Freezable. (Унаследовано от Freezable) |
| CreateInstanceCore() |
Создает экземпляр InputBindingобъекта . |
| Equals(Object) |
Определяет, эквивалентен ли предоставленный DependencyObject объект текущему DependencyObject. (Унаследовано от DependencyObject) |
| Freeze() |
Делает текущий объект неизменяемым и задает для свойства значение IsFrozen |
| FreezeCore(Boolean) |
Freezable Делает объект неизменимым или проверяет, может ли он быть изменен. (Унаследовано от Freezable) |
| GetAsFrozen() |
Создает замороженную копию базовых Freezable(не анимированных) значений свойств. Так как копия заморожена, все замороженные вложенные объекты копируются по ссылке. (Унаследовано от Freezable) |
| GetAsFrozenCore(Freezable) |
Делает экземпляр замороженным клоном указанного Freezable с помощью базовых (не анимированных) значений свойств. |
| GetCurrentValueAsFrozen() |
Создает замороженную копию с использованием текущих значений Freezable свойств. Так как копия заморожена, все замороженные вложенные объекты копируются по ссылке. (Унаследовано от Freezable) |
| GetCurrentValueAsFrozenCore(Freezable) |
Делает текущий экземпляр замороженным клоном указанного Freezable. Если объект имеет анимированные свойства зависимостей, их текущие анимированные значения копируются. |
| 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 реализацию OnPropertyChanged(DependencyPropertyChangedEventArgs) для вызова всех Changed обработчиков в ответ на изменение свойства зависимостей типа 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) |