InputBinding Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta un'associazione tra un oggetto InputGesture e un comando. Il comando è potenzialmente un oggetto 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
- Ereditarietà
- Ereditarietà
- Derivato
- Implementazioni
Esempio
Nell'esempio seguente viene illustrato come usare un KeyBinding oggetto per associare un KeyGesture oggetto al Open comando . Quando viene eseguito il movimento della chiave, viene richiamato il comando Apri.
<Window.InputBindings>
<KeyBinding Key="B"
Modifiers="Control"
Command="ApplicationCommands.Open" />
</Window.InputBindings>
Negli esempi seguenti viene illustrato come associare un comando personalizzato agli InputBinding oggetti . Questi esempi creano un'applicazione che consente all'utente di modificare il colore di sfondo eseguendo una delle azioni seguenti:
Fare clic su un pulsante.
Premendo CTRL+C.
Fare clic con il pulsante destro del mouse su un oggetto StackPanel (all'esterno di ListBox).
Il primo esempio crea una classe denominata SimpleDelegateCommand. Questa classe accetta un delegato in modo che l'oggetto che crea il comando possa definire l'azione che si verifica quando viene eseguito il comando.
SimpleDelegateCommand definisce anche le proprietà che specificano il tasto e l'input del mouse richiamano il comando.
GestureKey e GestureModifier specificare l'input della tastiera; MouseGesture specifica l'input 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;
}
' 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
Nell'esempio seguente viene creato e inizializzato , ColorChangeCommandche è un SimpleDelegateCommandoggetto . L'esempio definisce anche il metodo eseguito quando il comando viene richiamato e imposta le GestureKeyproprietà , GestureModifiere MouseGesture . Un'applicazione chiamerebbe il InitializeCommand metodo all'avvio del programma, ad esempio nel costruttore di un oggetto 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
Infine, l'esempio seguente crea l'interfaccia utente. Nell'esempio viene aggiunto un oggetto KeyBinding e a MouseBinding un StackPanel oggetto che contiene un Button oggetto e un oggetto ListBox. Quando l'utente seleziona un elemento in ListBox, può modificare il colore dello sfondo impostando il colore selezionato. In ogni caso, la CommandParameter proprietà è associata all'elemento selezionato in ListBoxe la Command proprietà è associata a ColorChangeCommand. Le KeyBinding.Keyproprietà , KeyBinding.Modifierse MouseBinding.MouseAction sono associate alle proprietà corrispondenti della 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>
Commenti
È possibile specificare che l'input dell'utente richiama un comando creando un oggetto InputBinding. Quando l'utente esegue l'input specificato, viene eseguito l'oggetto ICommand impostato sulla Command proprietà .
È possibile specificare che InputBinding richiama un comando definito in un oggetto creando un'associazione nelle Commandproprietà , CommandParametere CommandTarget . In questo modo è possibile definire un comando personalizzato e associarlo all'input dell'utente. Per altre informazioni, vedere il secondo esempio nella sezione Esempi.
Un InputBinding oggetto può essere definito in un oggetto specifico o a livello di classe registrando un RegisterClassInputBinding oggetto con .CommandManager
La InputBinding classe stessa non supporta l'utilizzo di XAML perché non espone un costruttore pubblico senza parametri (esiste un costruttore senza parametri, ma è protetto). Tuttavia, le classi derivate possono esporre un costruttore pubblico e pertanto possono impostare proprietà sulla classe derivata ereditata da InputBinding con un utilizzo XAML. Due classi derivate esistenti InputBindingche possono essere create un'istanza in XAML e possono impostare le proprietà in XAML sono KeyBinding e MouseBinding. La proprietà tipica nella programmazione WPF impostata in XAML e accetta uno o più InputBinding oggetti come valori è la UIElement.InputBindings proprietà .
Utilizzo dell'elemento oggetto XAML
< inputBindingDerivedClass.../>
Valori XAML
inputBindingDerivedClass Classe derivata di che supporta la sintassi degli InputBinding elementi oggetto, ad esempio KeyBinding o MouseBinding. Vedere le Note.
Costruttori
| Nome | Descrizione |
|---|---|
| InputBinding() |
Fornisce l'inizializzazione di base per le classi derivate da InputBinding. |
| InputBinding(ICommand, InputGesture) |
Inizializza una nuova istanza della InputBinding classe con il comando e il movimento di input specificati. |
Campi
| Nome | Descrizione |
|---|---|
| CommandParameterProperty |
Identifica la CommandParameter proprietà di dipendenza. |
| CommandProperty |
Identifica la Command proprietà di dipendenza. |
| CommandTargetProperty |
Identifica la CommandTarget proprietà di dipendenza. |
Proprietà
| Nome | Descrizione |
|---|---|
| CanFreeze |
Ottiene un valore che indica se l'oggetto può essere reso non modificabile. (Ereditato da Freezable) |
| Command |
Ottiene o imposta l'oggetto ICommand associato a questa associazione di input. |
| CommandParameter |
Ottiene o imposta i dati specifici del comando per un comando specifico. |
| CommandTarget |
Ottiene o imposta l'elemento di destinazione del comando. |
| DependencyObjectType |
Ottiene l'oggetto DependencyObjectType che esegue il wrapping del tipo CLR di questa istanza. (Ereditato da DependencyObject) |
| Dispatcher |
Ottiene l'oggetto DispatcherDispatcherObject a cui è associato. (Ereditato da DispatcherObject) |
| Gesture |
Ottiene o imposta l'oggetto InputGesture associato a questa associazione di input. |
| IsFrozen |
Ottiene un valore che indica se l'oggetto è attualmente modificabile. (Ereditato da Freezable) |
| IsSealed |
Ottiene un valore che indica se questa istanza è attualmente sealed (sola lettura). (Ereditato da DependencyObject) |
Metodi
| Nome | Descrizione |
|---|---|
| CheckAccess() |
Determina se il thread chiamante ha accesso a questo DispatcherObjectoggetto . (Ereditato da DispatcherObject) |
| ClearValue(DependencyProperty) |
Cancella il valore locale di una proprietà. La proprietà da cancellare viene specificata da un DependencyProperty identificatore. (Ereditato da DependencyObject) |
| ClearValue(DependencyPropertyKey) |
Cancella il valore locale di una proprietà di sola lettura. La proprietà da cancellare viene specificata da un oggetto DependencyPropertyKey. (Ereditato da DependencyObject) |
| Clone() |
Crea un clone modificabile dell'oggetto Freezable, eseguendo copie complete dei valori dell'oggetto. Quando si copiano le proprietà di dipendenza dell'oggetto, questo metodo copia le espressioni (che potrebbero non essere più risolte) ma non le animazioni o i relativi valori correnti. (Ereditato da Freezable) |
| CloneCore(Freezable) |
Copia i valori di base (non animati) delle proprietà dell'oggetto specificato. |
| CloneCurrentValue() |
Crea un clone modificabile (copia completa) dell'oggetto Freezable utilizzando i relativi valori correnti. (Ereditato da Freezable) |
| CloneCurrentValueCore(Freezable) |
Copia i valori correnti delle proprietà dell'oggetto specificato. |
| CoerceValue(DependencyProperty) |
Forza il valore della proprietà di dipendenza specificata. A tale scopo, richiamare qualsiasi CoerceValueCallback funzione specificata nei metadati della proprietà per la proprietà di dipendenza così come esiste nella chiamata DependencyObjectdi . (Ereditato da DependencyObject) |
| CreateInstance() |
Inizializza una nuova istanza della classe Freezable. (Ereditato da Freezable) |
| CreateInstanceCore() |
Crea un'istanza di un oggetto InputBinding. |
| Equals(Object) |
Determina se un oggetto specificato DependencyObject è equivalente all'oggetto corrente DependencyObject. (Ereditato da DependencyObject) |
| Freeze() |
Rende l'oggetto corrente non modificabile e imposta la relativa IsFrozen proprietà su |
| FreezeCore(Boolean) |
Rende l'oggetto Freezable non modificabile o verifica se può essere reso non modificabile. (Ereditato da Freezable) |
| GetAsFrozen() |
Crea una copia bloccata della proprietà , utilizzando i valori della Freezableproprietà base (non animati). Poiché la copia è bloccata, tutti gli oggetti secondari bloccati vengono copiati in base al riferimento. (Ereditato da Freezable) |
| GetAsFrozenCore(Freezable) |
Rende l'istanza un clone bloccato dell'oggetto specificato Freezable utilizzando valori di proprietà di base (non animati). |
| GetCurrentValueAsFrozen() |
Crea una copia bloccata dell'oggetto utilizzando i valori correnti delle Freezable proprietà. Poiché la copia è bloccata, tutti gli oggetti secondari bloccati vengono copiati in base al riferimento. (Ereditato da Freezable) |
| GetCurrentValueAsFrozenCore(Freezable) |
Rende l'istanza corrente un clone bloccato dell'oggetto specificato Freezable. Se l'oggetto ha proprietà di dipendenza animate, i valori animati correnti vengono copiati. |
| GetHashCode() |
Ottiene un codice hash per l'oggetto DependencyObject. (Ereditato da DependencyObject) |
| GetLocalValueEnumerator() |
Crea un enumeratore specializzato per determinare quali proprietà di dipendenza hanno valori impostati localmente in questo DependencyObjectoggetto . (Ereditato da DependencyObject) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| GetValue(DependencyProperty) |
Restituisce il valore effettivo corrente di una proprietà di dipendenza in questa istanza di un oggetto DependencyObject. (Ereditato da DependencyObject) |
| InvalidateProperty(DependencyProperty) |
Rivaluta il valore effettivo per la proprietà di dipendenza specificata. (Ereditato da DependencyObject) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| OnChanged() |
Chiamato quando l'oggetto corrente Freezable viene modificato. (Ereditato da Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
Questo membro supporta l'infrastruttura di Windows Presentation Foundation (WPF) e non deve essere usato direttamente dal codice. (Ereditato da Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Assicura che vengano stabiliti puntatori di contesto appropriati per un DependencyObjectType membro dati appena impostato. (Ereditato da Freezable) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Richiamato ogni volta che il valore effettivo di qualsiasi proprietà di dipendenza in questo DependencyObject oggetto è stato aggiornato. La proprietà di dipendenza specifica modificata viene segnalata nei dati dell'evento. (Ereditato da DependencyObject) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Esegue l'override dell'implementazione DependencyObject di OnPropertyChanged(DependencyPropertyChangedEventArgs) per richiamare anche i Changed gestori in risposta a una proprietà di dipendenza modificata di tipo Freezable. (Ereditato da Freezable) |
| ReadLocalValue(DependencyProperty) |
Restituisce il valore locale di una proprietà di dipendenza, se esistente. (Ereditato da DependencyObject) |
| ReadPreamble() |
Assicura che l'oggetto Freezable sia accessibile da un thread valido. Gli eredi di Freezable devono chiamare questo metodo all'inizio di qualsiasi API che legge i membri dati che non sono proprietà di dipendenza. (Ereditato da Freezable) |
| SetCurrentValue(DependencyProperty, Object) |
Imposta il valore di una proprietà di dipendenza senza modificarne l'origine del valore. (Ereditato da DependencyObject) |
| SetValue(DependencyProperty, Object) |
Imposta il valore locale di una proprietà di dipendenza, specificato dall'identificatore della proprietà di dipendenza. (Ereditato da DependencyObject) |
| SetValue(DependencyPropertyKey, Object) |
Imposta il valore locale di una proprietà di dipendenza di sola lettura, specificato dall'identificatore DependencyPropertyKey della proprietà di dipendenza. (Ereditato da DependencyObject) |
| ShouldSerializeProperty(DependencyProperty) |
Restituisce un valore che indica se i processi di serializzazione devono serializzare il valore per la proprietà di dipendenza specificata. (Ereditato da DependencyObject) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
| VerifyAccess() |
Impone che il thread chiamante abbia accesso a questo DispatcherObjectoggetto . (Ereditato da DispatcherObject) |
| WritePostscript() |
Genera l'evento Changed per Freezable e richiama il relativo OnChanged() metodo. Le classi che derivano da Freezable devono chiamare questo metodo alla fine di qualsiasi API che modifica i membri della classe non archiviati come proprietà di dipendenza. (Ereditato da Freezable) |
| WritePreamble() |
Verifica che l'oggetto Freezable non sia bloccato e che sia accessibile da un contesto di threading valido. Freezable Gli eredi devono chiamare questo metodo all'inizio di qualsiasi API che scrive nei membri dati che non sono proprietà di dipendenza. (Ereditato da Freezable) |
Eventi
| Nome | Descrizione |
|---|---|
| Changed |
Si verifica quando l'oggetto Freezable o un oggetto che contiene viene modificato. (Ereditato da Freezable) |