InputBinding Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa un enlace entre InputGesture y un comando. El comando puede ser de tipo 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
- Herencia
- Herencia
- Derivado
- Implementaciones
Ejemplos
En el ejemplo siguiente se muestra cómo usar un KeyBinding para enlazar un KeyGesture objeto al Open comando . Cuando se realiza el gesto de tecla, se invoca el comando Open.
<Window.InputBindings>
<KeyBinding Key="B"
Modifiers="Control"
Command="ApplicationCommands.Open" />
</Window.InputBindings>
En los ejemplos siguientes se muestra cómo enlazar un comando personalizado a InputBinding objetos . En estos ejemplos se crea una aplicación que permite al usuario cambiar el color de fondo realizando una de las siguientes acciones:
Hacer clic en un botón.
Presione CTRL+C.
Haga clic con el botón derecho en un ( StackPanel fuera de ListBox).
En el primer ejemplo se crea una clase denominada SimpleDelegateCommand
. Esta clase acepta un delegado para que el objeto que crea el comando pueda definir la acción que se produce cuando se ejecuta el comando.
SimpleDelegateCommand
también define las propiedades que especifican qué tecla y entrada del mouse invoca el comando .
GestureKey
y GestureModifier
especifican la entrada del teclado; MouseGesture
especifica la entrada del mouse.
// 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
En el ejemplo siguiente se crea e inicializa , ColorChangeCommand
que es .SimpleDelegateCommand
En el ejemplo también se define el método que se ejecuta cuando se invoca el comando y se establecen las GestureKey
propiedades , GestureModifier
y MouseGesture
. Una aplicación llamaría al InitializeCommand
método cuando comienza el programa, como en el constructor de .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
Por último, en el ejemplo siguiente se crea la interfaz de usuario. En el ejemplo se agrega un KeyBinding y a MouseBinding un StackPanel objeto que contiene y Button .ListBox Cuando el usuario selecciona un elemento en ListBox, puede cambiar el color del fondo al color seleccionado. En cada caso, la CommandParameter
propiedad está enlazada al elemento seleccionado en ListBoxy la Command
propiedad está enlazada a .ColorChangeCommand
Las KeyBinding.Keypropiedades , KeyBinding.Modifiersy MouseBinding.MouseAction se enlazan a las propiedades correspondientes de la SimpleDelegateCommand
clase .
<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>
Comentarios
Puede especificar que la entrada del usuario invoca un comando mediante la creación de un InputBinding. Cuando el usuario realiza la entrada especificada, se ejecuta el ICommand objeto que se establece en la Command propiedad .
Puede especificar que InputBinding invoca un comando definido en un objeto mediante la creación de un enlace en las Commandpropiedades , CommandParametery CommandTarget . Esto le permite definir un comando personalizado y asociarlo con la entrada del usuario. Para obtener más información, vea el segundo ejemplo de la sección Ejemplos.
InputBinding Se puede definir en un objeto específico o en el nivel de clase registrando un RegisterClassInputBinding objeto con .CommandManager
La InputBinding propia clase no admite el uso de XAML porque no expone un constructor sin parámetros público (hay un constructor sin parámetros, pero está protegido). Sin embargo, las clases derivadas pueden exponer un constructor público y, por tanto, pueden establecer propiedades en la clase derivada que se hereda de InputBinding con un uso xaml. Dos clases derivadas existentes InputBindingque se pueden crear instancias en XAML y que pueden establecer propiedades en XAML son KeyBinding y MouseBinding. La propiedad típica de la programación WPF que se establece en XAML y toma uno o varios InputBinding objetos como valores es la UIElement.InputBindings propiedad .
Uso de elementos de objeto XAML
< inputBindingDerivedClass.../>
Valores XAML
inputBindingDerivedClass
Clase derivada de que admite la sintaxis de InputBinding elementos de objeto, como KeyBinding o MouseBinding. Vea la sección Comentarios.
Constructores
InputBinding() |
Proporciona la inicialización base para las clases derivadas de InputBinding. |
InputBinding(ICommand, InputGesture) |
Inicializa una nueva instancia de la clase InputBinding con el comando y el gesto de entrada especificados. |
Campos
CommandParameterProperty |
Identifica la propiedad de dependencia CommandParameter. |
CommandProperty |
Identifica la propiedad de dependencia Command. |
CommandTargetProperty |
Identifica la propiedad de dependencia CommandTarget. |
Propiedades
CanFreeze |
Obtiene un valor que indica si el objeto se puede convertir en no modificable. (Heredado de Freezable) |
Command |
Obtiene o establece el ICommand asociado a este enlace de entrada. |
CommandParameter |
Obtiene o establece los datos específicos de un comando concreto. |
CommandTarget |
Obtiene o establece el elemento de destino del comando. |
DependencyObjectType |
Obtiene el DependencyObjectType objeto que encapsula el tipo CLR de esta instancia. (Heredado de DependencyObject) |
Dispatcher |
Obtiene el objeto Dispatcher al que está asociado DispatcherObject. (Heredado de DispatcherObject) |
Gesture |
Obtiene o establece el InputGesture asociado a este enlace de entrada. |
IsFrozen |
Obtiene un valor que indica si el objeto se puede modificar actualmente. (Heredado de Freezable) |
IsSealed |
Obtiene un valor que indica si esta instancia está actualmente sellada (es de solo lectura). (Heredado de DependencyObject) |
Métodos
CheckAccess() |
Determina si el subproceso de la llamada tiene acceso a DispatcherObject. (Heredado de DispatcherObject) |
ClearValue(DependencyProperty) |
Borra el valor local de una propiedad. La propiedad que se va a borrar se especifica mediante un identificador DependencyProperty. (Heredado de DependencyObject) |
ClearValue(DependencyPropertyKey) |
Borra el valor local de una propiedad de solo lectura. La propiedad que se va a borrar se especifica mediante un DependencyPropertyKey. (Heredado de DependencyObject) |
Clone() |
Crea un clon modificable del elemento Freezable y hace copias en profundidad de los valores del objeto. Cuando se copian las propiedades de dependencia del objeto, este método copia las expresiones (que puede que ya no se resuelvan), pero no copia las animaciones ni sus valores actuales. (Heredado de Freezable) |
CloneCore(Freezable) |
Copia los valores base (sin animaciones) de las propiedades del objeto especificado. |
CloneCurrentValue() |
Crea un clon modificable (copia en profundidad) de Freezable con sus valores actuales. (Heredado de Freezable) |
CloneCurrentValueCore(Freezable) |
Copia los valores actuales de las propiedades del objeto especificado. |
CoerceValue(DependencyProperty) |
Convierte el valor de la propiedad de dependencia especificada. Esto se logra invocando cualquier función CoerceValueCallback especificada en los metadatos de la propiedad de dependencia tal como existe en la clase DependencyObject que llama. (Heredado de DependencyObject) |
CreateInstance() |
Inicializa una nueva instancia de la clase Freezable. (Heredado de Freezable) |
CreateInstanceCore() |
Crea una instancia de un objeto InputBinding. |
Equals(Object) |
Determina si un objeto DependencyObject proporcionado es equivalente al objeto DependencyObject actual. (Heredado de DependencyObject) |
Freeze() |
Convierte el objeto actual en no modificable y establece su propiedad IsFrozen en |
FreezeCore(Boolean) |
Convierte el objeto Freezable en no modificable o prueba si se puede convertir en no modificable. (Heredado de Freezable) |
GetAsFrozen() |
Crea una copia inmovilizada de Freezable, con los valores de propiedades base (no animadas). Puesto que se inmoviliza la copia, se copia cualquier subobjeto inmovilizado por referencia. (Heredado de Freezable) |
GetAsFrozenCore(Freezable) |
Convierte la instancia en un clon inmovilizado del objeto Freezable especificado mediante los valores base de propiedades (sin animaciones). |
GetCurrentValueAsFrozen() |
Crea una copia inmovilizada de Freezable con los valores de propiedad actuales. Puesto que se inmoviliza la copia, se copia cualquier subobjeto inmovilizado por referencia. (Heredado de Freezable) |
GetCurrentValueAsFrozenCore(Freezable) |
Convierte la instancia actual en un clon inmovilizado del valor de Freezable especificado. Si el objeto tiene propiedades de dependencia animadas, se copian sus valores animados actuales. |
GetHashCode() |
Obtiene un código hash de este objeto DependencyObject. (Heredado de DependencyObject) |
GetLocalValueEnumerator() |
Crea un enumerador especializado para determinar qué propiedades de dependencia han establecido localmente los valores en DependencyObject. (Heredado de DependencyObject) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
GetValue(DependencyProperty) |
Devuelve el valor efectivo actual de una propiedad de dependencia en esta instancia de un DependencyObject. (Heredado de DependencyObject) |
InvalidateProperty(DependencyProperty) |
Vuelve a evaluar el valor efectivo para la propiedad de dependencia especificada. (Heredado de DependencyObject) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
OnChanged() |
Se le llama cuando el objeto Freezable actual se modifica. (Heredado de Freezable) |
OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Se asegura de que se establecen los punteros contextuales adecuados para un miembro de datos DependencyObjectType que se acaba de establecer. (Heredado de Freezable) |
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
Este miembro admite la infraestructura de Windows Presentation Foundation (WPF) y no está pensada para usarse directamente desde el código. (Heredado de Freezable) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Se invoca cuando se actualiza el valor efectivo de alguna propiedad de dependencia en este DependencyObject. La propiedad de dependencia específica que cambió se notifica en los datos de evento. (Heredado de DependencyObject) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Reemplaza la implementación DependencyObject de OnPropertyChanged(DependencyPropertyChangedEventArgs) para invocar también cualquier controlador Changed en respuesta a una propiedad de dependencia cambiante de tipo Freezable. (Heredado de Freezable) |
ReadLocalValue(DependencyProperty) |
Devuelve el valor local de una propiedad de dependencia, si existe. (Heredado de DependencyObject) |
ReadPreamble() |
Se asegura de que se tiene acceso a Freezable desde un subproceso válido. Los herederos de Freezable deben llamar a este método al inicio de las API que leen miembros de datos que no son propiedades de dependencia. (Heredado de Freezable) |
SetCurrentValue(DependencyProperty, Object) |
Establece el valor de una propiedad de dependencia sin cambiar el origen del valor. (Heredado de DependencyObject) |
SetValue(DependencyProperty, Object) |
Establece el valor local de una propiedad de dependencia, especificado mediante el identificador de la propiedad de dependencia. (Heredado de DependencyObject) |
SetValue(DependencyPropertyKey, Object) |
Establece el valor local de una propiedad de dependencia de solo lectura, especificado por el identificador DependencyPropertyKey de la propiedad de dependencia. (Heredado de DependencyObject) |
ShouldSerializeProperty(DependencyProperty) |
Devuelve un valor que indica si los procesos de serialización deben serializar el valor de la propiedad de dependencia especificada. (Heredado de DependencyObject) |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
VerifyAccess() |
Exige que el subproceso de la llamada tenga acceso a DispatcherObject. (Heredado de DispatcherObject) |
WritePostscript() |
Genera el evento Changed para Freezable e invoca su método OnChanged(). Las clases que derivan de Freezable deben llamar a este método al final de cualquier API que modifique miembros de clase que no estén almacenados como propiedades de dependencia. (Heredado de Freezable) |
WritePreamble() |
Comprueba que no se inmovilice Freezable y que se tiene acceso desde un contexto de subproceso válido. Los herederos de Freezable deben llamar a este método al inicio de las API que escriben en miembros de datos que no son propiedades de dependencia. (Heredado de Freezable) |
Eventos
Changed |
Se produce cuando se modifican la clase Freezable o un objeto que la contiene. (Heredado de Freezable) |