Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original

InputBinding (Clase)

Representa un enlace entre InputGesture y un comando. El comando puede ser de tipo RoutedCommand.

Espacio de nombres:  System.Windows.Input
Ensamblado:  PresentationCore (en PresentationCore.dll)
XMLNS para XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

public class InputBinding : Freezable, 
	ICommandSource
<inputBindingDerivedClass…/>

Valores XAML

inputBindingDerivedClass

Clase derivada de InputBinding que admite la sintaxis de elementos del objeto, como KeyBinding o MouseBinding. Vea la sección Comentarios.

El tipo InputBinding expone los siguientes miembros.

  NombreDescripción
Método protegidoInputBinding()Proporciona la inicialización base para las clases derivadas de InputBinding.
Método públicoInputBinding(ICommand, InputGesture)Inicializa una nueva instancia de la clase InputBinding con el comando y el movimiento de entrada especificados.
Arriba

  NombreDescripción
Propiedad públicaCanFreezeObtiene un valor que indica si el objeto se puede convertir en no modificable. (Se hereda de Freezable).
Propiedad públicaCommandObtiene o establece la interfaz ICommand asociada a este enlace de entrada.
Propiedad públicaCommandParameterObtiene o establece los datos específicos de un comando concreto.
Propiedad públicaCommandTargetObtiene o establece el elemento de destino del comando.
Propiedad públicaDependencyObjectTypeObtiene el objeto DependencyObjectType que ajusta el tipo CLR de esta instancia.  (Se hereda de DependencyObject).
Propiedad públicaDispatcherObtiene el objeto Dispatcher al que está asociado DispatcherObject. (Se hereda de DispatcherObject).
Propiedad públicaGestureObtiene o establece el comando InputGesture asociado a este enlace de entrada.
Propiedad públicaIsFrozenObtiene un valor que indica si el objeto es modificable actualmente. (Se hereda de Freezable).
Propiedad públicaIsSealedObtiene un valor que indica si esta instancia está actualmente sellada (es de solo lectura). (Se hereda de DependencyObject).
Arriba

  NombreDescripción
Método públicoCheckAccessDetermina si el subproceso de la llamada tiene acceso a DispatcherObject. (Se hereda de DispatcherObject).
Método públicoClearValue(DependencyProperty)Borra el valor local de una propiedad. La propiedad que se va a borrar se especifica mediante un identificador de DependencyProperty. (Se hereda de DependencyObject).
Método públicoClearValue(DependencyPropertyKey)Borra el valor local de una propiedad de sólo lectura. DependencyPropertyKey especifica la propiedad que se va a borrar. (Se hereda de DependencyObject).
Método públicoCloneCrea un clon modificable del objeto Freezable y hace copias en profundidad de sus valores. Al copiar las propiedades de dependencia del objeto, este método copia las expresiones (que puede que ya no se resuelvan) pero no las animaciones ni sus valores actuales. (Se hereda de Freezable).
Método protegidoCloneCoreCopia los valores base (sin animaciones) de las propiedades del objeto especificado. (Invalida a Freezable.CloneCore(Freezable)).
Método públicoCloneCurrentValueCrea un clon modificable (copia en profundidad) de Freezable con sus valores actuales. (Se hereda de Freezable).
Método protegidoCloneCurrentValueCoreCopia los valores actuales de las propiedades del objeto especificado. (Invalida a Freezable.CloneCurrentValueCore(Freezable)).
Método públicoCoerceValueConvierte el valor de la propiedad de dependencia especificada. Esto se logra invocando cualquier función de CoerceValueCallback especificada en los metadatos de la propiedad de dependencia cuando existe en el objeto DependencyObject de llamada. (Se hereda de DependencyObject).
Método protegidoCreateInstanceInicializa una nueva instancia de la clase Freezable. (Se hereda de Freezable).
Método protegidoCreateInstanceCoreCrea una instancia de un objeto InputBinding. (Invalida a Freezable.CreateInstanceCore()).
Método públicoEqualsDetermina si un objeto DependencyObject proporcionado es equivalente al objeto DependencyObject actual. (Se hereda de DependencyObject).
Método protegidoFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoFreeze()Convierte el objeto actual en no modificable y establece su propiedad IsFrozen en true. (Se hereda de Freezable).
Método protegidoFreezeCoreConvierte el objeto Freezable en no modificable o prueba si se puede convertir en no modificable. (Se hereda de Freezable).
Método públicoGetAsFrozenCrea una copia inmovilizada de Freezable, con los valores de la propiedad base (no animada). Puesto que se inmoviliza la copia, se copia cualquier subobjeto inmovilizado por referencia. (Se hereda de Freezable).
Método protegidoGetAsFrozenCoreConvierte la instancia en un clon inmovilizado del objeto Freezable especificado mediante los valores base de la propiedad (sin animaciones). (Invalida a Freezable.GetAsFrozenCore(Freezable)).
Método públicoGetCurrentValueAsFrozenCrea una copia inmovilizada de Freezable con los valores de propiedad actuales. Puesto que se inmoviliza la copia, se copia cualquier subobjeto inmovilizado por referencia. (Se hereda de Freezable).
Método protegidoGetCurrentValueAsFrozenCoreConvierte la instancia actual en un clon inmovilizado de la clase Freezable especificada. Si el objeto tiene propiedades de dependencia animadas, se copian sus valores animados actuales. (Invalida a Freezable.GetCurrentValueAsFrozenCore(Freezable)).
Método públicoGetHashCodeObtiene un código hash de este objeto DependencyObject. (Se hereda de DependencyObject).
Método públicoGetLocalValueEnumeratorCrea un enumerador especializado para determinar qué propiedades de dependencia han establecido localmente los valores en DependencyObject. (Se hereda de DependencyObject).
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método públicoGetValueDevuelve el valor efectivo actual de una propiedad de dependencia en esta instancia de DependencyObject. (Se hereda de DependencyObject).
Método públicoInvalidatePropertyVuelve a evaluar el valor efectivo para la propiedad de dependencia especificada. (Se hereda de DependencyObject).
Método protegidoMemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método protegidoOnChangedSe llama cuando se modifica el objeto Freezable actual. (Se hereda de Freezable).
Método protegidoOnFreezablePropertyChanged(DependencyObject, DependencyObject)Se asegura de que se establecen los punteros contextuales adecuados para un miembro de datos DependencyObjectType que se acaba de establecer. (Se hereda de Freezable).
Método protegidoOnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)Este miembro admite la infraestructura de Windows Presentation Foundation (WPF) y no se debe usar directamente desde el código. (Se hereda de Freezable).
Método protegidoOnPropertyChangedInvalida la implementación de DependencyObject de OnPropertyChanged para invocar también cualquier controlador Changed como respuesta a un cambio de propiedad de dependencia de tipo Freezable. (Se hereda de Freezable).
Método públicoReadLocalValueDevuelve el valor local de una propiedad de dependencia, si existe. (Se hereda de DependencyObject).
Método protegidoReadPreambleSe 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 lean miembros de datos que no son propiedades de dependencia. (Se hereda de Freezable).
Método públicoSetCurrentValueEstablece el valor de una propiedad de dependencia sin cambiar el origen de su valor. (Se hereda de DependencyObject).
Método públicoSetValue(DependencyProperty, Object)Establece el valor local de una propiedad de dependencia, especificado por su identificador de propiedad de dependencia. (Se hereda de DependencyObject).
Método públicoSetValue(DependencyPropertyKey, Object)Establece el valor local de una propiedad de dependencia de sólo lectura, especificado por el identificador DependencyPropertyKey de la propiedad de dependencia. (Se hereda de DependencyObject).
Método protegidoShouldSerializePropertyDevuelve un valor que indica si los procesos de serialización deben serializar el valor de la propiedad de dependencia proporcionada. (Se hereda de DependencyObject).
Método públicoToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Método públicoVerifyAccessExige que el subproceso de la llamada tenga acceso a DispatcherObject. (Se hereda de DispatcherObject).
Método protegidoWritePostscriptProvoca el evento Changed de Freezable e invoca su método OnChanged. Las clases que se derivan de Freezable deben llamar a este método al final de cualquier API que modifique miembros de clase que no se almacenen como propiedades de dependencia. (Se hereda de Freezable).
Método protegidoWritePreambleComprueba 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 cualquier API que escriba en miembros de datos que no sean propiedades de dependencia. (Se hereda de Freezable).
Arriba

  NombreDescripción
Evento públicoChangedSe produce cuando se modifican la clase Freezable o un objeto que la contiene. (Se hereda de Freezable).
Arriba

  NombreDescripción
Campo públicoMiembro estáticoCommandParameterPropertyIdentifica la propiedad de dependencia CommandParameter.
Campo públicoMiembro estáticoCommandPropertyIdentifica la propiedad de dependencia Command.
Campo públicoMiembro estáticoCommandTargetPropertyIdentifica la propiedad de dependencia CommandTarget.
Arriba

Puede especificar que los datos proporcionados por el usuario invoquen a un comando creando InputBinding. Cuando el usuario realiza la entrada especificada, se ejecuta el ICommand que está establecido en la propiedad Command.

Puede especificar que InputBinding invoque a un comando que se define en un objeto creando un enlace en las propiedades Command, CommandTarget y CommandParameter. Esto permite definir un comando personalizado y asociarlo a datos proporcionados por el usuario. Para obtener más información, vea el segundo ejemplo de la sección Ejemplos.

Se puede definir un enlace InputBinding en un objeto concreto o en el nivel de clase registrando un método RegisterClassInputBinding con CommandManager.

La clase InputBinding no admite por sí sola el uso de XAML, porque no expone un constructor predeterminado público (hay uno pero está protegido). Sin embargo, las clases derivadas pueden exponer un constructor público y, por lo tanto, pueden establecer las propiedades que se heredan de InputBinding en XAML. Dos clases derivadas existentes de InputBinding de las que se puede crear una instancia en XAML y que pueden establecer propiedades en XAML son KeyBinding y MouseBinding. La típica propiedad en la programación de WPF que se establece en XAML y toma como valores uno o varios objetos InputBinding es la propiedad UIElement.InputBindings.

En el siguiente ejemplo se muestra cómo utilizar un enlace KeyBinding para enlazar un objeto KeyGesture al comando Open. Cuando se realiza el movimiento de tecla, se invoca el comando Abrir.


<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 objetos InputBinding. En estos ejemplos se crea una aplicación que le permite al usuario cambiar el color de fondo realizando una de las siguientes acciones:

  • Hacer clic en un botón.

  • Presionar CTRL+C.

  • Hacer clic con el botón secundario en un StackPanel (fuera de ListBox).

El primer ejemplo 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 el comando se ejecuta. SimpleDelegateCommand también define propiedades que especifican qué clave y la entrada del mouse invoca el comando. GestureKey y GestureModifier especifican las entradas de 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;
}


En el siguiente ejemplo se crea y se inicializa ColorChangeCommand, que es un SimpleDelegateCommand. El ejemplo también define el método que se ejecuta cuando el comando se invoca y establece las propiedades GestureKey, MouseGesture y GestureModifier. Una aplicación puede llamar al método InitializeCommand cuando el programa comienza, 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;
    }
}


Finalmente, en el ejemplo siguiente se crea la interfaz de usuario. El ejemplo agrega un KeyBinding y un MouseBinding a un StackPanel que contiene un Button y un ListBox. Cuando el usuario selecciona un elemento en ListBox, puede cambiar el color del fondo por el color seleccionado. En cada caso, la propiedad CommandParameter se enlaza al elemento seleccionado en ListBox, y la propiedad Command se enlaza a ColorChangeCommand. Las propiedades KeyBinding.Key, KeyBinding.Modifiers y MouseBinding.MouseAction están enlazadas a las propiedades correspondientes en la clase SimpleDelegateCommand.


<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>


.NET Framework

Compatible con: 4, 3.5, 3.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft