InputBinding Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje vazbu mezi příkazem InputGesture a příkazem. Příkaz může být .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
- Dědičnost
- Dědičnost
- Odvozené
- Implementuje
Příklady
Následující příklad ukazuje, jak použít KeyBinding k vytvoření vazby KeyGesture k Open příkazu. Při provedení gesta klávesy se vyvolá příkaz Otevřít.
<Window.InputBindings>
<KeyBinding Key="B"
Modifiers="Control"
Command="ApplicationCommands.Open" />
</Window.InputBindings>
Následující příklady ukazují, jak vytvořit vazbu vlastního příkazu na InputBinding objekty. Tyto příklady vytvoří aplikaci, která uživateli umožní změnit barvu pozadí provedením jedné z následujících akcí:
Kliknutí na tlačítko
Stiskněte ctrl+C.
Kliknutí pravým tlačítkem myši na položku StackPanel (mimo ).ListBox
První příklad vytvoří třídu s názvem SimpleDelegateCommand. Tato třída přijímá delegáta, aby objekt, který vytváří příkaz, mohl definovat akci, která nastane při spuštění příkazu.
SimpleDelegateCommand definuje také vlastnosti, které určují, jaký klíč a vstup myši vyvolá příkaz.
GestureKey a GestureModifier zadejte vstup klávesnice. MouseGesture Určuje vstup myši.
// 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
Následující příklad vytvoří a inicializuje ColorChangeCommand, což je SimpleDelegateCommand. Příklad také definuje metodu, která se spustí při vyvolání příkazu a nastaví GestureKey, GestureModifiera MouseGesture vlastnosti. Aplikace by volala metodu InitializeCommand při zahájení programu, například v konstruktoru objektu 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
Nakonec následující příklad vytvoří uživatelské rozhraní. Příklad přidá a KeyBinding a MouseBinding do StackPanel , který obsahuje a Button a ListBox. Když uživatel vybere položku v sadě ListBox, může změnit barvu pozadí na vybranou barvu. V každém případě CommandParameter je vlastnost vázána na vybranou položku v objektu ListBoxa Command vlastnost je vázána na ColorChangeCommand. Vlastnost KeyBinding.Key, KeyBinding.Modifiersa MouseBinding.MouseAction vlastnosti jsou vázány na odpovídající vlastnosti třídy SimpleDelegateCommand .
<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>
Poznámky
Můžete určit, že uživatelský vstup vyvolá příkaz vytvořením .InputBinding Když uživatel provede zadaný vstup, ICommand který je nastaven na Command vlastnost se spustí.
Můžete určit, že InputBinding vyvolá příkaz, který je definován na objektu vytvořením vazby Commandna , CommandParametera CommandTarget vlastnosti. Díky tomu můžete definovat vlastní příkaz a přidružit ho ke vstupu uživatele. Další informace najdete v druhém příkladu v části Příklady.
Lze InputBinding definovat na konkrétním objektu nebo na úrovni třídy tím, že zaregistrujete v RegisterClassInputBinding objektu CommandManager.
Samotná InputBinding třída nepodporuje použití XAML, protože nezpřístupňuje veřejný konstruktor bez parametrů (existuje konstruktor bez parametrů, ale je chráněný). Odvozené třídy však mohou vystavit veřejný konstruktor, a proto mohou nastavit vlastnosti odvozené třídy, které jsou zděděné z InputBinding pomocí použití XAML. Dvě existující InputBinding-odvozené třídy, které lze vytvořit instanci v XAML a mohou nastavit vlastnosti v XAML jsou KeyBinding a MouseBinding. Typická vlastnost v programování WPF, která je nastavena v XAML a přebírá jeden nebo více InputBinding objektů jako hodnoty je UIElement.InputBindings vlastnost.
Použití elementu objektu XAML
< inputBindingDerivedClass.../>
Hodnoty XAML
inputBindingDerivedClass Odvozená třída InputBinding , která podporuje syntaxi elementu objektu, například KeyBinding nebo MouseBinding. Viz Poznámky.
Konstruktory
| Name | Description |
|---|---|
| InputBinding() |
Poskytuje základní inicializaci pro třídy odvozené z InputBinding. |
| InputBinding(ICommand, InputGesture) |
Inicializuje novou instanci InputBinding třídy zadaným příkazem a gestem zadávání. |
Pole
| Name | Description |
|---|---|
| CommandParameterProperty |
Identifikuje CommandParameter vlastnost závislosti. |
| CommandProperty |
Identifikuje Command vlastnost závislosti. |
| CommandTargetProperty |
Identifikuje CommandTarget vlastnost závislosti. |
Vlastnosti
| Name | Description |
|---|---|
| CanFreeze |
Získá hodnotu, která označuje, zda objekt lze vytvořit nemodifovatelný. (Zděděno od Freezable) |
| Command |
Získá nebo nastaví přidružené k ICommand této vstupní vazbě. |
| CommandParameter |
Získá nebo nastaví data specifická pro příkaz pro konkrétní příkaz. |
| CommandTarget |
Získá nebo nastaví cílový prvek příkazu. |
| DependencyObjectType |
DependencyObjectType Získá ten, který zabalí typ CLR této instance. (Zděděno od DependencyObject) |
| Dispatcher |
Dispatcher Získá toto DispatcherObject je přidružené. (Zděděno od DispatcherObject) |
| Gesture |
Získá nebo nastaví přidružené k InputGesture této vstupní vazbě. |
| IsFrozen |
Získá hodnotu, která označuje, zda objekt je aktuálně upravitelný. (Zděděno od Freezable) |
| IsSealed |
Získá hodnotu, která označuje, zda je tato instance aktuálně zapečetěna (jen pro čtení). (Zděděno od DependencyObject) |
Metody
| Name | Description |
|---|---|
| CheckAccess() |
Určuje, zda volající vlákno má přístup k tomuto DispatcherObject. (Zděděno od DispatcherObject) |
| ClearValue(DependencyProperty) |
Vymaže místní hodnotu vlastnosti. Vlastnost, která se má vymazat, je určena identifikátorem DependencyProperty . (Zděděno od DependencyObject) |
| ClearValue(DependencyPropertyKey) |
Vymaže místní hodnotu vlastnosti jen pro čtení. Vlastnost, která má být vymazána, je určena parametrem DependencyPropertyKey. (Zděděno od DependencyObject) |
| Clone() |
Vytvoří upravitelný klon objektu Freezable, vytváření hlubokých kopií hodnot objektu. Při kopírování vlastností závislostí objektu tato metoda kopíruje výrazy (které se už nemusí překládat), ale ne animace nebo jejich aktuální hodnoty. (Zděděno od Freezable) |
| CloneCore(Freezable) |
Zkopíruje základní (ne animované) hodnoty vlastností zadaného objektu. |
| CloneCurrentValue() |
Vytvoří upravitelný klon (hloubkovou Freezable kopii) pomocí aktuálních hodnot. (Zděděno od Freezable) |
| CloneCurrentValueCore(Freezable) |
Zkopíruje aktuální hodnoty vlastností zadaného objektu. |
| CoerceValue(DependencyProperty) |
Převede hodnotu zadané vlastnosti závislosti. Toho se dosahuje vyvoláním jakékoli CoerceValueCallback funkce zadané v metadatech vlastností pro vlastnost závislosti, protože existuje ve volání DependencyObject. (Zděděno od DependencyObject) |
| CreateInstance() |
Inicializuje novou instanci Freezable třídy. (Zděděno od Freezable) |
| CreateInstanceCore() |
Vytvoří instanci objektu InputBinding. |
| Equals(Object) |
Určuje, zda je poskytnutá DependencyObject hodnota ekvivalentní aktuálnímu DependencyObject. (Zděděno od DependencyObject) |
| Freeze() |
Nastaví aktuální objekt jako nemodifikovatelný a nastaví jeho IsFrozen vlastnost na |
| FreezeCore(Boolean) |
Freezable Znepřístupňuje objekt nebo testuje, zda je možné ho upravit. (Zděděno od Freezable) |
| GetAsFrozen() |
Vytvoří zablokovanou kopii Freezablevlastnosti , pomocí základních (ne animovaných) hodnot vlastností. Vzhledem k tomu, že je kopie zablokovaná, všechny ukotvené dílčí objekty se zkopírují odkazem. (Zděděno od Freezable) |
| GetAsFrozenCore(Freezable) |
Vytvoří instanci zablokovaným klonem zadaného Freezable pomocí základních (ne animovaných) hodnot vlastností. |
| GetCurrentValueAsFrozen() |
Vytvoří ukotvenou kopii s použitím aktuálních Freezable hodnot vlastností. Vzhledem k tomu, že je kopie zablokovaná, všechny ukotvené dílčí objekty se zkopírují odkazem. (Zděděno od Freezable) |
| GetCurrentValueAsFrozenCore(Freezable) |
Vytvoří aktuální instanci zmrazený klon zadaného Freezable. Pokud má objekt animované vlastnosti závislostí, jejich aktuální animované hodnoty se zkopírují. |
| GetHashCode() |
Získá hash kód pro tento DependencyObject. (Zděděno od DependencyObject) |
| GetLocalValueEnumerator() |
Vytvoří specializovaný enumerátor pro určení, které vlastnosti závislosti mají místně nastavené hodnoty na tomto DependencyObject. (Zděděno od DependencyObject) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| GetValue(DependencyProperty) |
Vrátí aktuální efektivní hodnotu vlastnosti závislosti na této instanci objektu DependencyObject. (Zděděno od DependencyObject) |
| InvalidateProperty(DependencyProperty) |
Znovu vyhodnotí efektivní hodnotu pro zadanou vlastnost závislosti. (Zděděno od DependencyObject) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| OnChanged() |
Volá se při změně aktuálního Freezable objektu. (Zděděno od Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
Tento člen podporuje infrastrukturu Windows Presentation Foundation (WPF) a není určená k použití přímo z vašeho kódu. (Zděděno od Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Zajišťuje, aby byly pro datový člen, který byl právě nastaven, vytvořeny DependencyObjectType příslušné kontextové ukazatele. (Zděděno od Freezable) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Vyvolána vždy, když byla aktualizována efektivní hodnota jakékoli vlastnosti závislosti na této DependencyObject vlastnosti. Konkrétní vlastnost závislosti, která se změnila, je hlášena v datech události. (Zděděno od DependencyObject) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Přepíše implementaci DependencyObjectOnPropertyChanged(DependencyPropertyChangedEventArgs) také vyvolat všechny Changed obslužné rutiny v reakci na měnící se závislost vlastnost typu Freezable. (Zděděno od Freezable) |
| ReadLocalValue(DependencyProperty) |
Vrátí místní hodnotu vlastnosti závislosti, pokud existuje. (Zděděno od DependencyObject) |
| ReadPreamble() |
Zajišťuje, že se k němu Freezable přistupuje z platného vlákna. Dědiče Freezable této metody musí volat tuto metodu na začátku jakéhokoli rozhraní API, které čte datové členy, které nejsou vlastnostmi závislosti. (Zděděno od Freezable) |
| SetCurrentValue(DependencyProperty, Object) |
Nastaví hodnotu vlastnosti závislosti beze změny jejího zdroje hodnot. (Zděděno od DependencyObject) |
| SetValue(DependencyProperty, Object) |
Nastaví místní hodnotu vlastnosti závislosti určenou jeho identifikátorem vlastnosti závislosti. (Zděděno od DependencyObject) |
| SetValue(DependencyPropertyKey, Object) |
Nastaví místní hodnotu vlastnosti závislosti jen pro čtení určenou identifikátorem DependencyPropertyKey vlastnosti závislosti. (Zděděno od DependencyObject) |
| ShouldSerializeProperty(DependencyProperty) |
Vrátí hodnotu, která určuje, zda procesy serializace mají serializovat hodnotu pro zadanou vlastnost závislosti. (Zděděno od DependencyObject) |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
| VerifyAccess() |
Vynucuje, že volající vlákno má přístup k tomuto DispatcherObject. (Zděděno od DispatcherObject) |
| WritePostscript() |
Changed Vyvolá událost pro událost Freezable a vyvolá její OnChanged() metodu. Třídy odvozené z Freezable by měly volat tuto metodu na konci jakéhokoli rozhraní API, které upravuje členy třídy, které nejsou uloženy jako vlastnosti závislosti. (Zděděno od Freezable) |
| WritePreamble() |
Ověřuje, že Freezable není zablokovaný a že k němu přistupujete z platného kontextu podprocesu. Freezable dědiče by měly tuto metodu volat na začátku jakéhokoli rozhraní API, které zapisuje do datových členů, které nejsou vlastnostmi závislosti. (Zděděno od Freezable) |
Událost
| Name | Description |
|---|---|
| Changed |
Nastane, když Freezable je objekt, který obsahuje, změněn. (Zděděno od Freezable) |