InputBinding Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine Bindung zwischen einem InputGesture und einem Befehl dar. Der Befehl ist potenziell ein 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
- Vererbung
- Vererbung
- Abgeleitet
- Implementiert
Beispiele
Das folgende Beispiel zeigt, wie sie eine KeyBinding Bindung KeyGesture an den Open Befehl verwenden. Wenn die Tastengeste ausgeführt wird, wird der Befehl "Öffnen" aufgerufen.
<Window.InputBindings>
<KeyBinding Key="B"
Modifiers="Control"
Command="ApplicationCommands.Open" />
</Window.InputBindings>
Die folgenden Beispiele zeigen, wie ein benutzerdefinierter Befehl an InputBinding Objekte gebunden wird. In diesen Beispielen wird eine Anwendung erstellt, mit der der Benutzer die Hintergrundfarbe ändern kann, indem eine der folgenden Aktionen ausgeführt wird:
Klicken auf eine Schaltfläche.
Drücken von STRG+C.
Klicken mit der rechten Maustaste auf ein StackPanel (außerhalb des ListBox).
Im ersten Beispiel wird eine Klasse mit dem Namen SimpleDelegateCommand. Diese Klasse akzeptiert einen Delegaten, sodass das Objekt, das den Befehl erstellt, die Aktion definieren kann, die beim Ausführen des Befehls auftritt.
SimpleDelegateCommand definiert außerdem Eigenschaften, mit denen angegeben wird, welche Taste und Mauseingabe den Befehl aufruft.
GestureKey und GestureModifier geben Sie die Tastatureingabe an. MouseGesture Gibt die Mauseingabe an.
// 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
Das folgende Beispiel erstellt und initialisiert den , der ColorChangeCommandein SimpleDelegateCommand. Im Beispiel wird auch die Methode definiert, die ausgeführt wird, wenn der Befehl aufgerufen wird, und legt die GestureKeyEigenschaften und MouseGesture Eigenschaften GestureModifierfest. Eine Anwendung würde die InitializeCommand Methode aufrufen, wenn das Programm beginnt, z. B. im Konstruktor eines 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
Schließlich erstellt das folgende Beispiel die Benutzeroberfläche. Im Beispiel wird eine KeyBinding und eine MouseBinding zu einer StackPanel , die ein Button und eine enthält, hinzugefügt ListBox. Wenn der Benutzer ein Element im ListBoxBereich auswählt, kann er die Farbe des Hintergrunds in die ausgewählte Farbe ändern. In jedem Fall ist die CommandParameter Eigenschaft an das ausgewählte Element im ListBox, und die Command Eigenschaft ist an die ColorChangeCommand. Die KeyBinding.KeyEigenschaften KeyBinding.Modifiersund MouseBinding.MouseAction Eigenschaften sind an die entsprechenden Eigenschaften der SimpleDelegateCommand Klasse gebunden.
<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>
Hinweise
Sie können angeben, dass die Benutzereingabe einen Befehl aufruft, indem Sie eine InputBinding. Wenn der Benutzer die angegebene Eingabe ausführt, wird der ICommand Wert auf die Command Eigenschaft festgelegt.
Sie können angeben, dass der Aufruf eines Befehls, der InputBinding für ein Objekt definiert ist, durch Erstellen einer Bindung für die Command, CommandParameterund CommandTarget Eigenschaften. Auf diese Weise können Sie einen benutzerdefinierten Befehl definieren und ihn benutzereingaben zuordnen. Weitere Informationen finden Sie im zweiten Beispiel im Abschnitt "Beispiele".
Ein InputBinding kann für ein bestimmtes Objekt oder auf Klassenebene definiert werden, indem ein RegisterClassInputBinding Benutzer registriert CommandManagerwird.
Die InputBinding Klasse selbst unterstützt keine XAML-Verwendung, da sie keinen öffentlichen parameterlosen Konstruktor verfügbar macht (es gibt einen parameterlosen Konstruktor, aber es ist geschützt). Abgeleitete Klassen können jedoch einen öffentlichen Konstruktor verfügbar machen und daher Eigenschaften für die abgeleitete Klasse festlegen, die von InputBinding einer XAML-Verwendung geerbt werden. Zwei vorhandene InputBindingabgeleitete Klassen, die in XAML instanziiert werden können und Eigenschaften in XAML festlegen können, sind KeyBinding und MouseBinding. Die typische Eigenschaft in der WPF-Programmierung, die in XAML festgelegt ist und ein oder InputBinding mehrere Objekte als Werte UIElement.InputBindings akzeptiert.
XAML-Objektelementverwendung
< inputBindingDerivedClass.../>
XAML-Werte
inputBindingDerivedClass Eine abgeleitete Klasse, die InputBinding objektelementsyntax unterstützt, z KeyBinding . B. oder MouseBinding. Weitere Informationen finden Sie in der "Anmerkungen".
Konstruktoren
| Name | Beschreibung |
|---|---|
| InputBinding() |
Stellt die Basisinitialisierung für klassen bereit, die von InputBinding. |
| InputBinding(ICommand, InputGesture) |
Initialisiert eine neue Instanz der InputBinding Klasse mit der angegebenen Befehls- und Eingabegeste. |
Felder
| Name | Beschreibung |
|---|---|
| CommandParameterProperty |
Identifies the CommandParameter dependency property. |
| CommandProperty |
Identifies the Command dependency property. |
| CommandTargetProperty |
Identifies the CommandTarget dependency property. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| CanFreeze |
Ruft einen Wert ab, der angibt, ob das Objekt unveränderlich gemacht werden kann. (Geerbt von Freezable) |
| Command |
Dient zum Abrufen oder Festlegen der ICommand zugeordneten Eingabebindung. |
| CommandParameter |
Dient zum Abrufen oder Festlegen der befehlsspezifischen Daten für einen bestimmten Befehl. |
| CommandTarget |
Ruft das Zielelement des Befehls ab oder legt es fest. |
| DependencyObjectType |
Ruft den DependencyObjectType CLR-Typ dieser Instanz ab. (Geerbt von DependencyObject) |
| Dispatcher |
Ruft dies Dispatcher ab, dem dies DispatcherObject zugeordnet ist. (Geerbt von DispatcherObject) |
| Gesture |
Dient zum Abrufen oder Festlegen der InputGesture zugeordneten Eingabebindung. |
| IsFrozen |
Ruft einen Wert ab, der angibt, ob das Objekt derzeit geändert werden kann. (Geerbt von Freezable) |
| IsSealed |
Ruft einen Wert ab, der angibt, ob diese Instanz aktuell versiegelt ist (schreibgeschützt). (Geerbt von DependencyObject) |
Methoden
| Name | Beschreibung |
|---|---|
| CheckAccess() |
Bestimmt, ob der aufrufende Thread Zugriff auf diesen DispatcherObjectThread hat. (Geerbt von DispatcherObject) |
| ClearValue(DependencyProperty) |
Löscht den lokalen Wert einer Eigenschaft. Die zu löschende Eigenschaft wird durch einen DependencyProperty Bezeichner angegeben. (Geerbt von DependencyObject) |
| ClearValue(DependencyPropertyKey) |
Löscht den lokalen Wert einer schreibgeschützten Eigenschaft. Die zu löschende Eigenschaft wird durch eine DependencyPropertyKey. (Geerbt von DependencyObject) |
| Clone() |
Erstellt einen modifizierbaren Klon des FreezableObjekts, wobei tiefe Kopien der Werte des Objekts erstellt werden. Beim Kopieren der Abhängigkeitseigenschaften des Objekts kopiert diese Methode Ausdrücke (die möglicherweise nicht mehr aufgelöst werden können), jedoch keine Animationen oder ihre aktuellen Werte. (Geerbt von Freezable) |
| CloneCore(Freezable) |
Kopiert die Basiswerte (nicht animiert) der Eigenschaften des angegebenen Objekts. |
| CloneCurrentValue() |
Erstellt einen modifizierbaren Klon (deep copy) der Freezable aktuellen Werte. (Geerbt von Freezable) |
| CloneCurrentValueCore(Freezable) |
Kopiert die aktuellen Werte der Eigenschaften des angegebenen Objekts. |
| CoerceValue(DependencyProperty) |
Wandelt den Wert der angegebenen Abhängigkeitseigenschaft um. Dies wird erreicht, indem alle CoerceValueCallback in Eigenschaftsmetadaten für die Abhängigkeitseigenschaft angegebenen Funktionen aufgerufen werden, wie sie für den Aufruf DependencyObjectvorhanden sind. (Geerbt von DependencyObject) |
| CreateInstance() |
Initialisiert eine neue Instanz der Freezable-Klasse. (Geerbt von Freezable) |
| CreateInstanceCore() |
Erstellt eine Instanz einer InputBinding. |
| Equals(Object) |
Bestimmt, ob ein bereitgestelltes DependencyObject Element dem aktuellen DependencyObjectentspricht. (Geerbt von DependencyObject) |
| Freeze() |
Macht das aktuelle Objekt unveränderlich und legt seine IsFrozen Eigenschaft auf |
| FreezeCore(Boolean) |
Macht das Freezable Objekt unveränderlich oder prüft, ob es unveränderlich gemacht werden kann. (Geerbt von Freezable) |
| GetAsFrozen() |
Erstellt eine fixierte Kopie der Freezablebasisbasierten (nicht animierten) Eigenschaftswerte. Da die Kopie fixiert ist, werden alle fixierten Unterobjekte per Verweis kopiert. (Geerbt von Freezable) |
| GetAsFrozenCore(Freezable) |
Macht die Instanz zu einem fixierten Klon des angegebenen Freezable Werts mithilfe von Basiseigenschaftenwerten (nicht animiert). |
| GetCurrentValueAsFrozen() |
Erstellt eine fixierte Kopie der Freezable aktuellen Eigenschaftswerte. Da die Kopie fixiert ist, werden alle fixierten Unterobjekte per Verweis kopiert. (Geerbt von Freezable) |
| GetCurrentValueAsFrozenCore(Freezable) |
Macht die aktuelle Instanz zu einem fixierten Klon des angegebenen Freezable. Wenn das Objekt animierte Abhängigkeitseigenschaften aufweist, werden die aktuellen animierten Werte kopiert. |
| GetHashCode() |
Ruft einen Hashcode für diese DependencyObjectab. (Geerbt von DependencyObject) |
| GetLocalValueEnumerator() |
Erstellt einen speziellen Enumerator, um zu bestimmen, welche Abhängigkeitseigenschaften lokal festgelegte Werte für diese DependencyObjectEigenschaft haben. (Geerbt von DependencyObject) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| GetValue(DependencyProperty) |
Gibt den aktuellen effektiven Wert einer Abhängigkeitseigenschaft für diese Instanz einer .DependencyObject (Geerbt von DependencyObject) |
| InvalidateProperty(DependencyProperty) |
Wertet den effektiven Wert für die angegebene Abhängigkeitseigenschaft erneut aus. (Geerbt von DependencyObject) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| OnChanged() |
Wird aufgerufen, wenn das aktuelle Freezable Objekt geändert wird. (Geerbt von Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
Dieses Mitglied unterstützt die Windows Presentation Foundation (WPF)-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. (Geerbt von Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Stellt sicher, dass geeignete Kontextzeiger für ein DependencyObjectType soeben festgelegtes Datenelement eingerichtet werden. (Geerbt von Freezable) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Wird immer aufgerufen, wenn der effektive Wert einer Abhängigkeitseigenschaft für diese DependencyObject Eigenschaft aktualisiert wurde. Die spezifische Abhängigkeitseigenschaft, die geändert wurde, wird in den Ereignisdaten gemeldet. (Geerbt von DependencyObject) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Setzt die DependencyObject Implementierung OnPropertyChanged(DependencyPropertyChangedEventArgs) außer Kraft, um auch alle Changed Handler als Reaktion auf eine sich ändernde Abhängigkeitseigenschaft vom Typ Freezableaufzurufen. (Geerbt von Freezable) |
| ReadLocalValue(DependencyProperty) |
Gibt den lokalen Wert einer Abhängigkeitseigenschaft zurück, sofern vorhanden. (Geerbt von DependencyObject) |
| ReadPreamble() |
Stellt sicher, dass der Freezable Zugriff über einen gültigen Thread erfolgt. Erber von Freezable müssen diese Methode am Anfang einer API aufrufen, die Datenmmber liest, die keine Abhängigkeitseigenschaften sind. (Geerbt von Freezable) |
| SetCurrentValue(DependencyProperty, Object) |
Legt den Wert einer Abhängigkeitseigenschaft fest, ohne die Wertquelle zu ändern. (Geerbt von DependencyObject) |
| SetValue(DependencyProperty, Object) |
Legt den lokalen Wert einer Abhängigkeitseigenschaft fest, die durch den Bezeichner der Abhängigkeitseigenschaft angegeben wird. (Geerbt von DependencyObject) |
| SetValue(DependencyPropertyKey, Object) |
Legt den lokalen Wert einer schreibgeschützten Abhängigkeitseigenschaft fest, die durch den DependencyPropertyKey Bezeichner der Abhängigkeitseigenschaft angegeben wird. (Geerbt von DependencyObject) |
| ShouldSerializeProperty(DependencyProperty) |
Gibt einen Wert zurück, der angibt, ob Serialisierungsprozesse den Wert für die bereitgestellte Abhängigkeitseigenschaft serialisieren sollen. (Geerbt von DependencyObject) |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
| VerifyAccess() |
Erzwingt, dass der aufrufende Thread Zugriff auf diesen DispatcherObjectThread hat. (Geerbt von DispatcherObject) |
| WritePostscript() |
Löst das Changed Ereignis für die Freezable Methode aus und ruft es OnChanged() auf. Klassen, die von Freezable dieser Methode abgeleitet werden, sollten am Ende einer API aufgerufen werden, die Klassenmmber ändert, die nicht als Abhängigkeitseigenschaften gespeichert sind. (Geerbt von Freezable) |
| WritePreamble() |
Überprüft, ob der Freezable Zugriff nicht fixiert ist und über einen gültigen Threadingkontext darauf zugegriffen wird. Freezable Vererbungen sollten diese Methode am Anfang einer API aufrufen, die in Datenmmber schreibt, die keine Abhängigkeitseigenschaften sind. (Geerbt von Freezable) |
Ereignisse
| Name | Beschreibung |
|---|---|
| Changed |
Tritt auf, wenn das Freezable darin enthaltene Objekt geändert wird. (Geerbt von Freezable) |