InputBinding Classe

Définition

Représente une liaison entre un InputGesture et une commande.Represents a binding between an InputGesture and a command. La commande peut être un RoutedCommand.The command is potentially a RoutedCommand.

public ref class InputBinding : System::Windows::Freezable, System::Windows::Input::ICommandSource
public ref class InputBinding : System::Windows::DependencyObject, System::Windows::Input::ICommandSource
public class InputBinding : System.Windows.Freezable, System.Windows.Input.ICommandSource
public class InputBinding : System.Windows.DependencyObject, System.Windows.Input.ICommandSource
type InputBinding = class
    inherit Freezable
    interface ICommandSource
type InputBinding = class
    inherit DependencyObject
    interface ICommandSource
Public Class InputBinding
Inherits Freezable
Implements ICommandSource
Public Class InputBinding
Inherits DependencyObject
Implements ICommandSource
Héritage
Héritage
Dérivé
Implémente

Exemples

L’exemple suivant montre comment utiliser un KeyBinding pour lier un KeyGesture à la Open commande.The following example shows how to use a KeyBinding to bind a KeyGesture to the Open command. Lorsque le mouvement clé est effectué, la commande ouvrir est appelée.When the key gesture is performed, the Open command is invoked.

<Window.InputBindings>
  <KeyBinding Key="B"
              Modifiers="Control" 
              Command="ApplicationCommands.Open" />
</Window.InputBindings>

Les exemples suivants montrent comment lier une commande personnalisée à des InputBinding objets.The following examples show how to bind a custom command to InputBinding objects. Ces exemples créent une application qui permet à l’utilisateur de modifier la couleur d’arrière-plan en effectuant l’une des actions suivantes :These examples create an application that enables the user to change the background color by performing one of the following actions:

  • Cliquant sur un bouton.Clicking a button.

  • Appuyez sur CTRL + C.Pressing CTRL+C.

  • Cliquez avec le bouton droit sur un StackPanel (en dehors du ListBox ).Right-clicking a StackPanel (outside the ListBox).

Le premier exemple crée une classe nommée SimpleDelegateCommand .The first example creates a class named SimpleDelegateCommand. Cette classe accepte un délégué afin que l’objet qui crée la commande puisse définir l’action qui se produit lors de l’exécution de la commande.This class accepts a delegate so that the object creating the command can define the action that occurs when the command executes. SimpleDelegateCommand définit également des propriétés qui spécifient quelle entrée de clé et de souris appelle la commande.SimpleDelegateCommand also defines properties that specify what key and mouse input invokes the command. GestureKey et GestureModifier Spécifiez l’entrée au clavier ; MouseGesture spécifie l’entrée de la souris.GestureKey and GestureModifier specify the keyboard input; MouseGesture specifies the mouse input.

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

L’exemple suivant crée et initialise le ColorChangeCommand , qui est un SimpleDelegateCommand .The following example creates and initializes the ColorChangeCommand, which is a SimpleDelegateCommand. L’exemple définit également la méthode qui s’exécute lorsque la commande est appelée et définit les GestureKey Propriétés, GestureModifier et MouseGesture .The example also defines the method that executes when the command is invoked and sets the GestureKey, GestureModifier, and MouseGesture properties. Une application appelle la InitializeCommand méthode au démarrage du programme, par exemple dans le constructeur d’un Window .An application would call the InitializeCommand method when the program begins, such as in the constructor of a 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

Enfin, l’exemple suivant crée l’interface utilisateur.Finally, the following example creates the user interface. L’exemple ajoute un KeyBinding et un MouseBinding à un StackPanel qui contient un Button et un ListBox .The example adds a KeyBinding and a MouseBinding to a StackPanel that contains a Button and a ListBox. Lorsque l’utilisateur sélectionne un élément dans le ListBox , il peut modifier la couleur de l’arrière-plan par la couleur sélectionnée.When the user selects an item in the ListBox, he or she can change the color of the background to the selected color. Dans chaque cas, la CommandParameter propriété est liée à l’élément sélectionné dans le ListBox , et la Command propriété est liée à ColorChangeCommand .In each case, the CommandParameter property is bound to the selected item in the ListBox, and the Command property is bound to the ColorChangeCommand. Les KeyBinding.Key KeyBinding.Modifiers Propriétés, et MouseBinding.MouseAction sont liées aux propriétés correspondantes sur la SimpleDelegateCommand classe.The KeyBinding.Key, KeyBinding.Modifiers, and MouseBinding.MouseAction properties are bound to the corresponding properties on the SimpleDelegateCommand class.

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

Remarques

Vous pouvez spécifier que l’entrée d’utilisateur appelle une commande en créant un InputBinding .You can specify that user input invokes a command by creating a InputBinding. Lorsque l’utilisateur exécute l’entrée spécifiée, la ICommand propriété qui a la valeur Command est exécutée.When the user performs the specified input, the ICommand that is set to the Command property is executed.

Vous pouvez spécifier que InputBinding appelle une commande définie sur un objet en créant une liaison sur les Command CommandParameter Propriétés, et CommandTarget .You can specify that the InputBinding invokes a command that is defined on an object by creating a binding on the Command, CommandParameter, and CommandTarget properties. Cela vous permet de définir une commande personnalisée et de l’associer à une entrée d’utilisateur.This enables you to define a custom command and associate it with user input. Pour plus d’informations, consultez le deuxième exemple de la section exemples.For more information, see the second example in the Examples section.

Un InputBinding peut être défini sur un objet spécifique ou au niveau de la classe en inscrivant un RegisterClassInputBinding avec le CommandManager .An InputBinding can be defined on a specific object or at the class level by registering a RegisterClassInputBinding with the CommandManager.

La InputBinding classe elle-même ne prend pas en charge l’utilisation de XAML, car elle n’expose pas de constructeur sans paramètre public (il existe un constructeur sans paramètre, mais il est protégé).The InputBinding class itself does not support XAML usage because it does not expose a public parameterless constructor (there is a parameterless constructor, but it is protected). Toutefois, les classes dérivées peuvent exposer un constructeur public et, par conséquent, définir des propriétés sur la classe dérivée qui sont héritées de InputBinding avec une utilisation XAML.However, derived classes can expose a public constructor and therefore can set properties on the derived class that are inherited from InputBinding with a XAML usage. Deux InputBinding classes dérivées existantes qui peuvent être instanciées en XAML et peuvent définir des propriétés en XAML sont KeyBinding et MouseBinding .Two existing InputBinding-derived classes that can be instantiated in XAML and can set properties in XAML are KeyBinding and MouseBinding. La propriété typique de la programmation WPF qui est définie en XAML et accepte un ou plusieurs InputBinding objets en tant que valeurs est la UIElement.InputBindings propriété.The typical property in WPF programming that is set in XAML and takes one or more InputBinding objects as values is the UIElement.InputBindings property.

Utilisation d'éléments objet XAMLXAML Object Element Usage

<inputBindingDerivedClass…/>

Valeurs XAMLXAML Values

inputBindingDerivedClass
Classe dérivée de InputBinding qui prend en charge la syntaxe d’élément objet, telle que KeyBinding ou MouseBinding .A derived class of InputBinding that supports object element syntax, such as KeyBinding or MouseBinding. Consultez la section Notes.See Remarks.

Constructeurs

InputBinding()

Fournit l'initialisation de base pour les classes dérivées de InputBinding.Provides base initialization for classes derived from InputBinding.

InputBinding(ICommand, InputGesture)

Initialise une nouvelle instance de la classe InputBinding avec la commande et le mouvement d'entrée spécifiés.Initializes a new instance of the InputBinding class with the specified command and input gesture.

Champs

CommandParameterProperty

Identifie la propriété de dépendance CommandParameter.Identifies the CommandParameter dependency property.

CommandProperty

Identifie la propriété de dépendance Command.Identifies the Command dependency property.

CommandTargetProperty

Identifie la propriété de dépendance CommandTarget.Identifies the CommandTarget dependency property.

Propriétés

CanFreeze

Obtient une valeur qui indique si l’objet peut être rendu non modifiable.Gets a value that indicates whether the object can be made unmodifiable.

(Hérité de Freezable)
Command

Obtient ou définit le ICommand associé à cette liaison d’entrée.Gets or sets the ICommand associated with this input binding.

CommandParameter

Obtient ou définit les données spécifiques à la commande pour une commande particulière.Gets or sets the command-specific data for a particular command.

CommandTarget

Obtient ou définit l'élément cible de la commande.Gets or sets the target element of the command.

DependencyObjectType

Obtient le DependencyObjectType qui encapsule le type CLR de cette instance.Gets the DependencyObjectType that wraps the CLR type of this instance.

(Hérité de DependencyObject)
Dispatcher

Obtient le Dispatcher associé à DispatcherObject.Gets the Dispatcher this DispatcherObject is associated with.

(Hérité de DispatcherObject)
Gesture

Obtient ou définit le InputGesture associé à cette liaison d’entrée.Gets or sets the InputGesture associated with this input binding.

IsFrozen

Obtient une valeur qui indique si l’objet est actuellement modifiable.Gets a value that indicates whether the object is currently modifiable.

(Hérité de Freezable)
IsSealed

Récupère une valeur qui indique si cette instance est actuellement sealed (en lecture seule).Gets a value that indicates whether this instance is currently sealed (read-only).

(Hérité de DependencyObject)

Méthodes

CheckAccess()

Détermine si le thread appelant a accès à ce DispatcherObject.Determines whether the calling thread has access to this DispatcherObject.

(Hérité de DispatcherObject)
ClearValue(DependencyProperty)

Efface la valeur locale d’une propriété.Clears the local value of a property. La propriété à effacer est spécifiée par un identificateur DependencyProperty.The property to be cleared is specified by a DependencyProperty identifier.

(Hérité de DependencyObject)
ClearValue(DependencyPropertyKey)

Efface la valeur locale d’une propriété en lecture seule.Clears the local value of a read-only property. La propriété à effacer est spécifiée par DependencyPropertyKey.The property to be cleared is specified by a DependencyPropertyKey.

(Hérité de DependencyObject)
Clone()

Crée un clone modifiable de Freezable, en créant des copies complètes des valeurs de l’objet.Creates a modifiable clone of the Freezable, making deep copies of the object's values. Lors de la copie des propriétés de dépendance de l’objet, cette méthode copie les expressions (qui peuvent ne plus se résoudre), mais pas les animations ni leurs valeurs actuelles.When copying the object's dependency properties, this method copies expressions (which might no longer resolve) but not animations or their current values.

(Hérité de Freezable)
CloneCore(Freezable)

Copie les valeurs de base (non animées) des propriétés de l'objet spécifié.Copies the base (non-animated) values of the properties of the specified object.

CloneCurrentValue()

Crée un clone modifiable (copie complète) de Freezable en utilisant ses valeurs actuelles.Creates a modifiable clone (deep copy) of the Freezable using its current values.

(Hérité de Freezable)
CloneCurrentValueCore(Freezable)

Copie les valeurs actuelles des propriétés de l'objet spécifié.Copies the current values of the properties of the specified object.

CoerceValue(DependencyProperty)

Convertit la valeur de la propriété de dépendance spécifiée.Coerces the value of the specified dependency property. Pour cela, on appelle toute fonction CoerceValueCallback spécifiée dans les métadonnées de propriété pour la propriété de dépendance telle qu’elle existe sur le DependencyObject appelant.This is accomplished by invoking any CoerceValueCallback function specified in property metadata for the dependency property as it exists on the calling DependencyObject.

(Hérité de DependencyObject)
CreateInstance()

Initialise une nouvelle instance de la classe Freezable.Initializes a new instance of the Freezable class.

(Hérité de Freezable)
CreateInstanceCore()

Crée une instance de InputBinding.Creates an instance of an InputBinding.

Equals(Object)

Détermine si un DependencyObject fourni est équivalent au DependencyObject réel.Determines whether a provided DependencyObject is equivalent to the current DependencyObject.

(Hérité de DependencyObject)
Freeze()

Rend l’objet actif non modifiable et attribue à sa propriété IsFrozen la valeur true.Makes the current object unmodifiable and sets its IsFrozen property to true.

(Hérité de Freezable)
FreezeCore(Boolean)

Rend l'objet Freezable non modifiable ou vérifie si celui-ci peut être rendu non modifiable ou pas.Makes the Freezable object unmodifiable or tests whether it can be made unmodifiable.

(Hérité de Freezable)
GetAsFrozen()

Crée une copie figée de Freezable, à l'aide des valeurs de propriété (non-animées) de base.Creates a frozen copy of the Freezable, using base (non-animated) property values. Étant donné que la copie est figée, tous les sous-objets figés sont copiés par référence.Because the copy is frozen, any frozen sub-objects are copied by reference.

(Hérité de Freezable)
GetAsFrozenCore(Freezable)

Convertit l'instance en clone figé du Freezable spécifié à l'aide des valeurs de propriétés (non animées) de base.Makes the instance a frozen clone of the specified Freezable by using base (non-animated) property values.

GetCurrentValueAsFrozen()

Crée une copie figée de Freezable à l'aide des valeurs de propriété actuelles.Creates a frozen copy of the Freezable using current property values. Étant donné que la copie est figée, tous les sous-objets figés sont copiés par référence.Because the copy is frozen, any frozen sub-objects are copied by reference.

(Hérité de Freezable)
GetCurrentValueAsFrozenCore(Freezable)

Convertit l’instance actuelle en un clone figé du Freezable spécifié.Makes the current instance a frozen clone of the specified Freezable. Si l’objet a des propriétés de dépendance animées, leurs valeurs animées actuelles sont copiées.If the object has animated dependency properties, their current animated values are copied.

GetHashCode()

Obtient un code de hachage pour ce DependencyObject.Gets a hash code for this DependencyObject.

(Hérité de DependencyObject)
GetLocalValueEnumerator()

Crée un énumérateur spécialisé pour déterminer quelles propriétés de dépendance ont des valeurs définies localement sur ce DependencyObject.Creates a specialized enumerator for determining which dependency properties have locally set values on this DependencyObject.

(Hérité de DependencyObject)
GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
GetValue(DependencyProperty)

Retourne la valeur effective actuelle d’une propriété de dépendance sur cette instance d’un DependencyObject.Returns the current effective value of a dependency property on this instance of a DependencyObject.

(Hérité de DependencyObject)
InvalidateProperty(DependencyProperty)

Réévalue la valeur effective de la propriété de dépendance spécifiée.Re-evaluates the effective value for the specified dependency property.

(Hérité de DependencyObject)
MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
OnChanged()

Appelé lorsque l’objet Freezable actuel est modifié.Called when the current Freezable object is modified.

(Hérité de Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject)

Garantit que les pointeurs de contexte appropriés sont établis pour un membre de données de type DependencyObjectType qui vient juste d'être défini.Ensures that appropriate context pointers are established for a DependencyObjectType data member that has just been set.

(Hérité de Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

Ce membre prend en charge l’infrastructure Windows Presentation Foundation (WPF) et n’est pas destiné à être utilisé directement à partir de votre code.This member supports the Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.

(Hérité de Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Substitue l’implémentation DependencyObject de OnPropertyChanged(DependencyPropertyChangedEventArgs) pour appeler également tous les gestionnaires Changed en réponse à une propriété de dépendance variable de type Freezable.Overrides the DependencyObject implementation of OnPropertyChanged(DependencyPropertyChangedEventArgs) to also invoke any Changed handlers in response to a changing dependency property of type Freezable.

(Hérité de Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Méthode appelée chaque fois que la valeur effective d’une propriété de dépendance sur ce DependencyObject a été mise à jour.Invoked whenever the effective value of any dependency property on this DependencyObject has been updated. La propriété de dépendance spécifique qui a changé est signalée dans les données d’événement.The specific dependency property that changed is reported in the event data.

(Hérité de DependencyObject)
ReadLocalValue(DependencyProperty)

Retourne la valeur locale d’une propriété de dépendance, si elle existe.Returns the local value of a dependency property, if it exists.

(Hérité de DependencyObject)
ReadPreamble()

Garantit que Freezable est accessible à partir d'un thread valide.Ensures that the Freezable is being accessed from a valid thread. Les héritiers de Freezable doivent appeler cette méthode au début de toute API lisant les membres de données qui ne sont pas des propriétés de dépendance.Inheritors of Freezable must call this method at the beginning of any API that reads data members that are not dependency properties.

(Hérité de Freezable)
SetCurrentValue(DependencyProperty, Object)

Définit la valeur d’une propriété de dépendance sans modifier sa valeur source.Sets the value of a dependency property without changing its value source.

(Hérité de DependencyObject)
SetValue(DependencyProperty, Object)

Définit la valeur locale d’une propriété de dépendance, spécifiée par son identificateur de propriété de dépendance.Sets the local value of a dependency property, specified by its dependency property identifier.

(Hérité de DependencyObject)
SetValue(DependencyPropertyKey, Object)

Définit la valeur locale d’une propriété de dépendance en lecture seule, spécifiée par l’identificateur DependencyPropertyKey de la propriété de dépendance.Sets the local value of a read-only dependency property, specified by the DependencyPropertyKey identifier of the dependency property.

(Hérité de DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Retourne une valeur qui indique si les processus de sérialisation doivent sérialiser la valeur de la propriété de dépendance fournie.Returns a value that indicates whether serialization processes should serialize the value for the provided dependency property.

(Hérité de DependencyObject)
ToString()

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(Hérité de Object)
VerifyAccess()

Garantit que le thread appelant a accès à DispatcherObject.Enforces that the calling thread has access to this DispatcherObject.

(Hérité de DispatcherObject)
WritePostscript()

Déclenche l’événement Changed pour le Freezable et appelle sa méthode OnChanged().Raises the Changed event for the Freezable and invokes its OnChanged() method. Les classes qui dérivent de Freezable doivent appeler cette méthode à la fin de toute API qui modifie des membres de classe qui ne sont pas stockés en tant que propriétés de dépendance.Classes that derive from Freezable should call this method at the end of any API that modifies class members that are not stored as dependency properties.

(Hérité de Freezable)
WritePreamble()

Vérifie que le Freezable n'est pas figé et que son accès s'effectue à partir d'un contexte de thread valide.Verifies that the Freezable is not frozen and that it is being accessed from a valid threading context. Les héritiers de Freezable doivent appeler cette méthode au début de toute API écrivant dans les membres de données qui ne sont pas des propriétés de dépendance.Freezable inheritors should call this method at the beginning of any API that writes to data members that are not dependency properties.

(Hérité de Freezable)

Événements

Changed

Se produit lorsque Freezable ou un objet qu'il contient est modifié.Occurs when the Freezable or an object it contains is modified.

(Hérité de Freezable)

S’applique à

Voir aussi