InputBinding Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Vertegenwoordigt een binding tussen een InputGesture en een opdracht. De opdracht is mogelijk een 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
- Overname
- Overname
- Afgeleid
- Implementeringen
Voorbeelden
In het volgende voorbeeld ziet u hoe u een KeyBinding verbinding KeyGesture met de Open opdracht gebruikt. Wanneer de toetsbeweging wordt uitgevoerd, wordt de opdracht Openen aangeroepen.
<Window.InputBindings>
<KeyBinding Key="B"
Modifiers="Control"
Command="ApplicationCommands.Open" />
</Window.InputBindings>
In de volgende voorbeelden ziet u hoe u een aangepaste opdracht koppelt aan InputBinding objecten. In deze voorbeelden wordt een toepassing gemaakt waarmee de gebruiker de achtergrondkleur kan wijzigen door een van de volgende acties uit te voeren:
Klik op een knop.
Druk op Ctrl+C.
Klik met de rechtermuisknop op een StackPanel (buiten het ListBox).
In het eerste voorbeeld wordt een klasse met de naam SimpleDelegateCommandgemaakt. Deze klasse accepteert een gemachtigde, zodat het object dat de opdracht maakt, de actie kan definiëren die optreedt wanneer de opdracht wordt uitgevoerd.
SimpleDelegateCommand definieert ook eigenschappen die aangeven welke toets- en muisinvoer de opdracht aanroept.
GestureKey en GestureModifier geef de toetsenbordinvoer op. MouseGesture Hiermee geeft u de muisinvoer op.
// 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
In het volgende voorbeeld wordt de ColorChangeCommand, een SimpleDelegateCommand. In het voorbeeld wordt ook de methode gedefinieerd die wordt uitgevoerd wanneer de opdracht wordt aangeroepen en de GestureKey, GestureModifieren MouseGesture eigenschappen wordt ingesteld. Een toepassing roept de InitializeCommand methode aan wanneer het programma begint, zoals in de constructor van een 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
Ten slotte maakt het volgende voorbeeld de gebruikersinterface. In het voorbeeld worden een en een MouseBinding toegevoegd aan een StackPanel met een ButtonListBox.KeyBinding Wanneer de gebruiker een item in de ListBoxlijst selecteert, kan deze de kleur van de achtergrond wijzigen in de geselecteerde kleur. In elk geval is de CommandParameter eigenschap gebonden aan het geselecteerde item in de ListBox, en de Command eigenschap is gebonden aan de ColorChangeCommand. De KeyBinding.Key, KeyBinding.Modifiersen MouseBinding.MouseAction eigenschappen zijn gebonden aan de bijbehorende eigenschappen van de SimpleDelegateCommand klasse.
<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>
Opmerkingen
U kunt opgeven dat gebruikersinvoer een opdracht aanroept door een InputBinding. Wanneer de gebruiker de opgegeven invoer uitvoert, wordt de ICommand eigenschap uitgevoerd die is ingesteld op de Command eigenschap.
U kunt opgeven dat de InputBinding aanroept van een opdracht die is gedefinieerd voor een object door een binding te maken op de Command, CommandParameteren CommandTarget eigenschappen. Hiermee kunt u een aangepaste opdracht definiëren en deze koppelen aan gebruikersinvoer. Zie het tweede voorbeeld in de sectie Voorbeelden voor meer informatie.
Een InputBinding kan worden gedefinieerd voor een specifiek object of op klasseniveau door een RegisterClassInputBinding te registreren bij de CommandManager.
De InputBinding klasse zelf biedt geen ondersteuning voor XAML-gebruik omdat er geen openbare parameterloze constructor wordt weergegeven (er is een parameterloze constructor, maar deze is beveiligd). Afgeleide klassen kunnen echter een openbare constructor beschikbaar maken en kunnen daarom eigenschappen instellen voor de afgeleide klasse die worden overgenomen van InputBinding met een XAML-gebruik. Twee bestaande InputBinding- afgeleide klassen die kunnen worden geïnstantieerd in XAML en kunnen eigenschappen instellen in XAML zijn KeyBinding en MouseBinding. De typische eigenschap in WPF programmeren die is ingesteld in XAML en gebruikt een of meer InputBinding-objecten als waarden is de eigenschap UIElement.InputBindings.
Gebruik van XAML-objectelementen
< inputBindingDerivedClass.../>
XAML-waarden
inputBindingDerivedClass Een afgeleide klasse van die ondersteuning biedt voor de syntaxis van InputBinding objectelementen, zoals KeyBinding of MouseBinding. Zie opmerkingen.
Constructors
| Name | Description |
|---|---|
| InputBinding() |
Biedt basis initialisatie voor klassen die zijn afgeleid van InputBinding. |
| InputBinding(ICommand, InputGesture) |
Initialiseert een nieuw exemplaar van de InputBinding klasse met de opgegeven opdracht en invoerbeweging. |
Velden
| Name | Description |
|---|---|
| CommandParameterProperty |
Identificeert de CommandParameter afhankelijkheidseigenschap. |
| CommandProperty |
Identificeert de Command afhankelijkheidseigenschap. |
| CommandTargetProperty |
Identificeert de CommandTarget afhankelijkheidseigenschap. |
Eigenschappen
| Name | Description |
|---|---|
| CanFreeze |
Hiermee wordt een waarde opgehaald die aangeeft of het object onmodieerbaar kan worden gemaakt. (Overgenomen van Freezable) |
| Command |
Hiermee haalt u de ICommand gekoppelde invoerbinding op of stelt u deze in. |
| CommandParameter |
Hiermee haalt u de opdrachtspecifieke gegevens voor een bepaalde opdracht op of stelt u deze in. |
| CommandTarget |
Hiermee haalt u het doelelement van de opdracht op of stelt u dit in. |
| DependencyObjectType |
Hiermee haalt u het DependencyObjectType CLR-type van dit exemplaar op. (Overgenomen van DependencyObject) |
| Dispatcher |
Hiermee wordt de Dispatcher aan dit DispatcherObject gekoppelde bestand. (Overgenomen van DispatcherObject) |
| Gesture |
Hiermee haalt u de InputGesture gekoppelde invoerbinding op of stelt u deze in. |
| IsFrozen |
Hiermee wordt een waarde opgehaald die aangeeft of het object momenteel kan worden gewijzigd. (Overgenomen van Freezable) |
| IsSealed |
Hiermee wordt een waarde opgehaald die aangeeft of dit exemplaar momenteel is verzegeld (alleen-lezen). (Overgenomen van DependencyObject) |
Methoden
| Name | Description |
|---|---|
| CheckAccess() |
Bepaalt of de aanroepende thread toegang heeft tot dit DispatcherObject. (Overgenomen van DispatcherObject) |
| ClearValue(DependencyProperty) |
Hiermee wist u de lokale waarde van een eigenschap. De eigenschap die moet worden gewist, wordt opgegeven door een DependencyProperty id. (Overgenomen van DependencyObject) |
| ClearValue(DependencyPropertyKey) |
Hiermee wist u de lokale waarde van een alleen-lezen eigenschap. De eigenschap die moet worden gewist, wordt opgegeven door een DependencyPropertyKey. (Overgenomen van DependencyObject) |
| Clone() |
Hiermee maakt u een wijzigbare kloon van de Freezable, waardoor diepe kopieën van de waarden van het object worden gemaakt. Bij het kopiëren van de eigenschappen van de afhankelijkheid van het object kopieert deze methode expressies (die mogelijk niet meer worden omgezet) maar niet animaties of hun huidige waarden. (Overgenomen van Freezable) |
| CloneCore(Freezable) |
Kopieert de basiswaarden (niet-geanimeerd) van de eigenschappen van het opgegeven object. |
| CloneCurrentValue() |
Hiermee maakt u een wijzigbare kloon (diepe kopie) van het gebruik van de Freezable huidige waarden. (Overgenomen van Freezable) |
| CloneCurrentValueCore(Freezable) |
Kopieert de huidige waarden van de eigenschappen van het opgegeven object. |
| CoerceValue(DependencyProperty) |
Hiermee wordt de waarde van de opgegeven afhankelijkheidseigenschap gecodeerd. Dit wordt bereikt door een CoerceValueCallback functie aan te roepen die is opgegeven in eigenschapsmetagegevens voor de afhankelijkheidseigenschap, zoals deze bestaat bij het aanroepen DependencyObject. (Overgenomen van DependencyObject) |
| CreateInstance() |
Initialiseert een nieuw exemplaar van de Freezable klasse. (Overgenomen van Freezable) |
| CreateInstanceCore() |
Hiermee maakt u een exemplaar van een InputBinding. |
| Equals(Object) |
Bepaalt of een opgegeven DependencyObject gelijk is aan de huidige DependencyObject. (Overgenomen van DependencyObject) |
| Freeze() |
Maakt het huidige object onmodifieerbaar en stelt de IsFrozen eigenschap ervan in op |
| FreezeCore(Boolean) |
Maakt het Freezable object onmodifieerbaar of test of het kan worden onmodifieerbaar. (Overgenomen van Freezable) |
| GetAsFrozen() |
Hiermee maakt u een geblokkeerde kopie van de Freezableeigenschapswaarden met basiswaarden (niet-geanimeerd). Omdat de kopie is geblokkeerd, worden alle geblokkeerde subobjecten gekopieerd met verwijzing. (Overgenomen van Freezable) |
| GetAsFrozenCore(Freezable) |
Hiermee wordt het exemplaar een geblokkeerde kloon van de opgegeven Freezable met behulp van basiseigenschapswaarden (niet-geanimeerd). |
| GetCurrentValueAsFrozen() |
Hiermee maakt u een geblokkeerde kopie van het Freezable gebruik van de huidige eigenschapswaarden. Omdat de kopie is geblokkeerd, worden alle geblokkeerde subobjecten gekopieerd met verwijzing. (Overgenomen van Freezable) |
| GetCurrentValueAsFrozenCore(Freezable) |
Hiermee wordt het huidige exemplaar een geblokkeerde kloon van de opgegeven Freezable. Als het object eigenschappen van afhankelijkheid met animatie heeft, worden de huidige geanimeerde waarden gekopieerd. |
| GetHashCode() |
Hiermee haalt u een hashcode op.DependencyObject (Overgenomen van DependencyObject) |
| GetLocalValueEnumerator() |
Hiermee maakt u een gespecialiseerde enumerator om te bepalen welke afhankelijkheidseigenschappen lokaal waarden hebben ingesteld.DependencyObject (Overgenomen van DependencyObject) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| GetValue(DependencyProperty) |
Retourneert de huidige effectieve waarde van een afhankelijkheidseigenschap op dit exemplaar van een DependencyObject. (Overgenomen van DependencyObject) |
| InvalidateProperty(DependencyProperty) |
Evalueert de effectieve waarde voor de opgegeven afhankelijkheidseigenschap opnieuw. (Overgenomen van DependencyObject) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| OnChanged() |
Aangeroepen wanneer het huidige Freezable object wordt gewijzigd. (Overgenomen van Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
Dit lid ondersteunt de Windows Presentation Foundation -infrastructuur (WPF) en is niet bedoeld om rechtstreeks vanuit uw code te worden gebruikt. (Overgenomen van Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Zorgt ervoor dat de juiste contextpointers tot stand worden gebracht voor een DependencyObjectType gegevenslid dat zojuist is ingesteld. (Overgenomen van Freezable) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Aangeroepen wanneer de effectieve waarde van een afhankelijkheidseigenschap op deze DependencyObject eigenschap is bijgewerkt. De specifieke afhankelijkheidseigenschap die is gewijzigd, wordt gerapporteerd in de gebeurtenisgegevens. (Overgenomen van DependencyObject) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Overschrijft de DependencyObject implementatie van het aanroepen Changed van OnPropertyChanged(DependencyPropertyChangedEventArgs) handlers als reactie op een veranderende afhankelijkheidseigenschap van het typeFreezable. (Overgenomen van Freezable) |
| ReadLocalValue(DependencyProperty) |
Retourneert de lokale waarde van een afhankelijkheidseigenschap, als deze bestaat. (Overgenomen van DependencyObject) |
| ReadPreamble() |
Zorgt ervoor dat de Freezable thread wordt geopend vanuit een geldige thread. Overnames van Freezable deze methode moeten aan het begin van een API worden aangeroepen die gegevensleden leest die geen afhankelijkheidseigenschappen zijn. (Overgenomen van Freezable) |
| SetCurrentValue(DependencyProperty, Object) |
Hiermee stelt u de waarde van een afhankelijkheidseigenschap in zonder de waardebron te wijzigen. (Overgenomen van DependencyObject) |
| SetValue(DependencyProperty, Object) |
Hiermee stelt u de lokale waarde van een afhankelijkheidseigenschap in, die is opgegeven door de id van de afhankelijkheidseigenschap. (Overgenomen van DependencyObject) |
| SetValue(DependencyPropertyKey, Object) |
Hiermee stelt u de lokale waarde van een alleen-lezen afhankelijkheidseigenschap in, die is opgegeven door de DependencyPropertyKey id van de afhankelijkheidseigenschap. (Overgenomen van DependencyObject) |
| ShouldSerializeProperty(DependencyProperty) |
Retourneert een waarde die aangeeft of serialisatieprocessen de waarde voor de opgegeven afhankelijkheidseigenschap moeten serialiseren. (Overgenomen van DependencyObject) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
| VerifyAccess() |
Hiermee wordt afgedwongen dat de aanroepende thread toegang heeft tot dit DispatcherObject. (Overgenomen van DispatcherObject) |
| WritePostscript() |
Hiermee wordt de gebeurtenis voor de Freezable gebeurtenis gegenereerd en wordt OnChanged() de Changed methode aangeroepen. Klassen die zijn afgeleid van Freezable , moeten deze methode aan het einde van een API aanroepen die klasseleden wijzigt die niet zijn opgeslagen als afhankelijkheidseigenschappen. (Overgenomen van Freezable) |
| WritePreamble() |
Controleert of het Freezable niet is geblokkeerd en of deze wordt geopend vanuit een geldige threadingcontext. Freezable overnemers moeten deze methode aan het begin van een API aanroepen die schrijft naar gegevensleden die geen afhankelijkheidseigenschappen zijn. (Overgenomen van Freezable) |
gebeurtenis
| Name | Description |
|---|---|
| Changed |
Treedt op wanneer het Freezable object dat het bevat, wordt gewijzigd. (Overgenomen van Freezable) |