Partager via


InputBinding Classe

Définition

Représente une liaison entre une InputGesture commande et une commande. La commande est potentiellement un 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
Héritage
Héritage
Dérivé
Implémente

Exemples

L’exemple suivant montre comment utiliser une KeyBinding liaison à KeyGesture la Open commande. Lorsque le mouvement de clé est effectué, la commande Open est appelée.

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

Les exemples suivants montrent comment lier une commande personnalisée à InputBinding des objets. 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 :

  • Cliquez sur un bouton.

  • Appuyez sur Ctrl+C.

  • Cliquer avec le bouton droit sur un StackPanel (en dehors du ListBox).

Le premier exemple crée une classe nommée 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. SimpleDelegateCommand définit également les propriétés qui spécifient la clé et l’entrée de la souris qui appellent la commande. GestureKey et GestureModifier spécifiez l’entrée du clavier ; MouseGesture spécifie l’entrée de la souris.

 // 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. L’exemple définit également la méthode qui s’exécute lorsque la commande est appelée et définit les propriétés et MouseGesture les GestureKeypropriétésGestureModifier. Une application appelle la InitializeCommand méthode au début du programme, par exemple dans le constructeur d’un 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. L’exemple ajoute un KeyBinding et MouseBinding un à un StackPanel qui contient un Button et un 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. 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 au ColorChangeCommand. Les KeyBinding.Keypropriétés , KeyBinding.Modifierset MouseBinding.MouseAction les propriétés sont liées aux propriétés correspondantes sur la SimpleDelegateCommand classe.

<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 utilisateur appelle une commande en créant un InputBinding. Lorsque l’utilisateur effectue l’entrée spécifiée, la ICommandCommand propriété est exécutée.

Vous pouvez spécifier que les InputBinding appels d’une commande définie sur un objet en créant une liaison sur les propriétés et CommandTarget les CommandCommandParameterpropriétés. Cela vous permet de définir une commande personnalisée et de l’associer à l’entrée utilisateur. Pour plus d’informations, consultez le deuxième exemple de la section Exemples.

Un InputBinding objet peut être défini sur un objet spécifique ou au niveau de la classe en inscrivant un RegisterClassInputBinding objet auprès du CommandManager.

La InputBinding classe elle-même ne prend pas en charge l’utilisation XAML, car elle n’expose pas de constructeur sans paramètre public (il existe un constructeur sans paramètre, mais il est protégé). Toutefois, les classes dérivées peuvent exposer un constructeur public et peuvent donc définir des propriétés sur la classe dérivée héritée d’une InputBinding utilisation XAML. Deux classes dérivées existantes InputBindingqui peuvent être instanciées en XAML et qui peuvent définir des propriétés en XAML sont KeyBinding et MouseBinding. La propriété classique dans la programmation WPF définie en XAML et accepte un ou plusieurs InputBinding objets en tant que valeurs est la UIElement.InputBindings propriété.

Utilisation des éléments d’objet XAML

< inputBindingDerivedClass.../>

Valeurs XAML

inputBindingDerivedClass Classe dérivée de celle-ci prend en charge la syntaxe d’élément InputBinding objet, telle que KeyBinding ou MouseBinding. Voir les remarques.

Constructeurs

Nom Description
InputBinding()

Fournit l’initialisation de base pour les classes dérivées de InputBinding.

InputBinding(ICommand, InputGesture)

Initialise une nouvelle instance de la InputBinding classe avec la commande et le mouvement d’entrée spécifiés.

Champs

Nom Description
CommandParameterProperty

Identifie la CommandParameter propriété de dépendance.

CommandProperty

Identifie la Command propriété de dépendance.

CommandTargetProperty

Identifie la CommandTarget propriété de dépendance.

Propriétés

Nom Description
CanFreeze

Obtient une valeur qui indique si l’objet peut être rendu non modifiable.

(Hérité de Freezable)
Command

Obtient ou définit l’associé ICommand à cette liaison d’entrée.

CommandParameter

Obtient ou définit les données spécifiques à la commande pour une commande particulière.

CommandTarget

Obtient ou définit l’élément cible de la commande.

DependencyObjectType

Obtient le DependencyObjectType type CLR de cette instance.

(Hérité de DependencyObject)
Dispatcher

Obtient ce Dispatcher qui DispatcherObject est associé.

(Hérité de DispatcherObject)
Gesture

Obtient ou définit l’associé InputGesture à cette liaison d’entrée.

IsFrozen

Obtient une valeur qui indique si l’objet est actuellement modifiable.

(Hérité de Freezable)
IsSealed

Obtient une valeur qui indique si cette instance est actuellement scellée (en lecture seule).

(Hérité de DependencyObject)

Méthodes

Nom Description
CheckAccess()

Détermine si le thread appelant a accès à ce DispatcherObjectfichier .

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

Efface la valeur locale d’une propriété. La propriété à effacer est spécifiée par un DependencyProperty identificateur.

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

Efface la valeur locale d’une propriété en lecture seule. La propriété à effacer est spécifiée par un DependencyPropertyKey.

(Hérité de DependencyObject)
Clone()

Crée un clone modifiable de l’objet Freezable, effectuant des copies approfondies des valeurs de l’objet. Lors de la copie des propriétés de dépendance de l’objet, cette méthode copie les expressions (qui peuvent ne plus être résolues), mais pas les animations ou leurs valeurs actuelles.

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

Copie les valeurs de base (non animées) des propriétés de l’objet spécifié.

CloneCurrentValue()

Crée un clone modifiable (copie approfondie) de l’utilisation Freezable de ses valeurs actuelles.

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

Copie les valeurs actuelles des propriétés de l’objet spécifié.

CoerceValue(DependencyProperty)

Force la valeur de la propriété de dépendance spécifiée. Pour ce faire, appelez n’importe quelle CoerceValueCallback fonction spécifiée dans les métadonnées de propriété pour la propriété de dépendance telle qu’elle existe sur l’appel DependencyObject.

(Hérité de DependencyObject)
CreateInstance()

Initialise une nouvelle instance de la classe Freezable.

(Hérité de Freezable)
CreateInstanceCore()

Crée une instance d’un InputBinding.

Equals(Object)

Détermine si un élément fourni DependencyObject est équivalent à l’actuel DependencyObject.

(Hérité de DependencyObject)
Freeze()

Rend l’objet actuel non modifiable et définit sa IsFrozen propriété sur true.

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

Rend l’objet Freezable non modifiable ou teste s’il peut être rendu inmodifiable.

(Hérité de Freezable)
GetAsFrozen()

Crée une copie figée des valeurs de Freezablepropriété de base (non animées). Étant donné que la copie est figée, tous les sous-objets figés sont copiés par référence.

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

Rend l’instance un clone figé du spécifié Freezable à l’aide de valeurs de propriété de base (non animées).

GetCurrentValueAsFrozen()

Crée une copie figée de l’utilisation Freezable des valeurs de propriété actuelles. Étant donné que la copie est figée, tous les sous-objets figés sont copiés par référence.

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

Rend l’instance actuelle un clone figé du fichier spécifié Freezable. Si l’objet a des propriétés de dépendance animée, leurs valeurs animées actuelles sont copiées.

GetHashCode()

Obtient un code de hachage pour ce 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.

(Hérité de DependencyObject)
GetType()

Obtient la Type de l’instance actuelle.

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

Retourne la valeur effective actuelle d’une propriété de dépendance sur cette instance d’un DependencyObject.

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

Évalue à nouveau la valeur effective de la propriété de dépendance spécifiée.

(Hérité de DependencyObject)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
OnChanged()

Appelé lorsque l’objet actuel Freezable est modifié.

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

Ce membre prend en charge l’infrastructure WPF (Windows Presentation Foundation) et n’est pas destiné à être utilisé directement à partir de votre code.

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

Garantit que les pointeurs de contexte appropriés sont établis pour un DependencyObjectType membre de données qui vient d’être défini.

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

Appelé chaque fois que la valeur effective d’une propriété de dépendance sur celle-ci DependencyObject a été mise à jour. La propriété de dépendance spécifique qui a changé est signalée dans les données d’événement.

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

Remplace l’implémentation DependencyObject de OnPropertyChanged(DependencyPropertyChangedEventArgs) l’appel de tous Changed les gestionnaires en réponse à une propriété de dépendance modifiée de type Freezable.

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

Retourne la valeur locale d’une propriété de dépendance, le cas échéant.

(Hérité de DependencyObject)
ReadPreamble()

Garantit l’accès Freezable à partir d’un thread valide. Les héritiers de Freezable doivent appeler cette méthode au début de toute API qui lit les membres de données qui ne sont pas des propriétés de dépendance.

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

Définit la valeur d’une propriété de dépendance sans modifier sa source de valeur.

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

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

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

(Hérité de DependencyObject)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)
VerifyAccess()

Applique que le thread appelant a accès à ce DispatcherObjectfichier .

(Hérité de DispatcherObject)
WritePostscript()

Déclenche l’événement Changed pour la Freezable méthode et appelle sa OnChanged() méthode. Les classes dérivées Freezable de doivent appeler cette méthode à la fin de toute API qui modifie les membres de classe qui ne sont pas stockés en tant que propriétés de dépendance.

(Hérité de Freezable)
WritePreamble()

Vérifie que l’objet Freezable n’est pas figé et qu’il est accessible à partir d’un contexte de threading valide. Freezable Les hériteurs doivent appeler cette méthode au début de toute API qui écrit dans les membres de données qui ne sont pas des propriétés de dépendance.

(Hérité de Freezable)

Événements

Nom Description
Changed

Se produit lorsque l’objet Freezable qu’il contient est modifié.

(Hérité de Freezable)

S’applique à

Voir aussi