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ří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 k KeyBinding vytvoření vazby s příkazem OpenKeyGesture . 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 kombinaci kláves CTRL+C.
Kliknutí pravým tlačítkem na ( StackPanel mimo ListBox).
První příklad vytvoří třídu s názvem SimpleDelegateCommand
. Tato třída přijímá delegáta, aby objekt vytvářející příkaz mohl definovat akci, ke které dojde při spuštění příkazu.
SimpleDelegateCommand
definuje také vlastnosti, které určují, jakou klávesu a vstup myši vyvolá příkaz .
GestureKey
a GestureModifier
zadejte vstup z 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
vlastnosti , GestureModifier
a MouseGesture
. Aplikace by volala metodu InitializeCommand
při spuštění 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á KeyBinding a do objektu MouseBindingStackPanel , který obsahuje Button a ListBox. Když uživatel vybere položku v ListBox, může změnit barvu pozadí na vybranou barvu. V každém případě CommandParameter
je vlastnost svázaná s vybranou položkou v objektu ListBoxa Command
vlastnost je svázaná s objektem ColorChangeCommand
. Vlastnosti KeyBinding.Key, KeyBinding.Modifiersa MouseBinding.MouseAction jsou svázány s odpovídajícími vlastnostmi 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, a to vytvořením InputBinding. Když uživatel provede zadaný vstup, ICommand provede se vlastnost , která je nastavena Command na vlastnost .
Můžete určit, že InputBinding vyvolá příkaz definovaný u objektu vytvořením vazby pro Commandvlastnosti , CommandParametera CommandTarget . To vám umožní definovat vlastní příkaz a přidružit ho ke vstupu uživatele. Další informace najdete ve druhém příkladu v části Příklady.
Objekt InputBinding lze definovat u konkrétního objektu nebo na úrovni třídy registrací RegisterClassInputBinding objektu CommandManagerpomocí .
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é s InputBinding použitím XAML. Dvě existující InputBindingtřídy odvozené od instancí, které je možné vytvořit v xaml a 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 , která podporuje syntaxi elementu InputBinding objektu, například KeyBinding nebo MouseBinding. Viz Poznámky.
Konstruktory
InputBinding() |
Poskytuje základní inicializaci pro třídy odvozené z InputBinding. |
InputBinding(ICommand, InputGesture) |
Inicializuje novou instanci InputBinding třídy pomocí zadaného příkazu a gesta vstupu. |
Pole
CommandParameterProperty |
Identifikuje CommandParameter vlastnost závislosti. |
CommandProperty |
Identifikuje Command vlastnost závislosti. |
CommandTargetProperty |
Identifikuje CommandTarget vlastnost závislosti. |
Vlastnosti
CanFreeze |
Získá hodnotu, která označuje, zda objekt lze změnit. (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 konkrétní příkaz. |
CommandTarget |
Získá nebo nastaví cílový prvek příkazu. |
DependencyObjectType |
Získá, DependencyObjectType který zabalí typ CLR této instance. (Zděděno od DependencyObject) |
Dispatcher |
Získá to DispatcherDispatcherObject je přidružena k. (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 je objekt aktuálně upravitelný. (Zděděno od Freezable) |
IsSealed |
Získá hodnotu, která označuje, zda je tato instance právě zapečetěna (jen pro čtení). (Zděděno od DependencyObject) |
Metody
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á má být vymazána, je určena identifikátorem DependencyProperty . (Zděděno od DependencyObject) |
ClearValue(DependencyPropertyKey) |
Vymaže místní hodnotu vlastnosti jen pro čtení. Vlastnost, která se má vymazat, je určena parametrem DependencyPropertyKey. (Zděděno od DependencyObject) |
Clone() |
Vytvoří upravitelný klon objektu Freezablea vytvoří hluboké kopie hodnot objektu. Při kopírování vlastností závislostí objektu tato metoda kopíruje výrazy (které již nemusí být vyřešeny), 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 kopii) objektu Freezable pomocí jeho 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 dosáhne vyvoláním jakékoli CoerceValueCallback funkce zadané v metadatech vlastnosti závislosti, protože existuje ve volajícím DependencyObjectobjektu . (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 zadaný DependencyObject je ekvivalentní k aktuálnímu DependencyObject. (Zděděno od DependencyObject) |
Freeze() |
Nastaví aktuální objekt jako neupravitelný a nastaví jeho IsFrozen vlastnost na |
FreezeCore(Boolean) |
Nastaví objekt jako Freezable neupravitelný nebo testuje, jestli ho nelze změnit. (Zděděno od Freezable) |
GetAsFrozen() |
Vytvoří zamrzlou kopii objektu Freezables použitím základních (ne animovaných) hodnot vlastností. Vzhledem k tomu, že kopie je zamrzlá, jsou všechny ukotvené dílčí objekty zkopírovány odkazem. (Zděděno od Freezable) |
GetAsFrozenCore(Freezable) |
Vytvoří instanci zmrazeného klonu zadaného Freezable pomocí základních (ne animovaných) hodnot vlastností. |
GetCurrentValueAsFrozen() |
Vytvoří zamrzlou kopii objektu Freezable s použitím aktuálních hodnot vlastností. Vzhledem k tomu, že kopie je zamrzlá, jsou všechny ukotvené dílčí objekty zkopírovány odkazem. (Zděděno od Freezable) |
GetCurrentValueAsFrozenCore(Freezable) |
Vytvoří aktuální instanci zablokovaného klonu zadaného Freezableobjektu . Pokud má objekt animované vlastnosti závislostí, zkopírují se jeho aktuální animované hodnoty. |
GetHashCode() |
Získá hash kód pro tento DependencyObject. (Zděděno od DependencyObject) |
GetLocalValueEnumerator() |
Vytvoří specializovaný enumerátor pro určení vlastností závislostí, které mají místně nastavené hodnoty v tomto DependencyObjectobjektu . (Zděděno od DependencyObject) |
GetType() |
Type Získá z 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 Objectsouboru . (Zděděno od Object) |
OnChanged() |
Volána při změně aktuálního Freezable objektu. (Zděděno od Freezable) |
OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Zajišťuje, že jsou vytvořeny vhodné ukazatele kontextu pro DependencyObjectType datový člen, který byl právě nastaven. (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) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Vyvolá se vždy, když byla aktualizována efektivní hodnota jakékoli vlastnosti závislosti na této DependencyObject vlastnosti. Konkrétní změněná vlastnost závislosti je uvedena v datech události. (Zděděno od DependencyObject) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Přepíše implementaci DependencyObject tak, OnPropertyChanged(DependencyPropertyChangedEventArgs) aby také vyvolala všechny Changed obslužné rutiny v reakci na měnící se vlastnost závislosti 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 Freezable se k souboru přistupuje z platného vlákna. Dědíci Freezable musí tuto metodu volat na začátku jakéhokoli rozhraní API, které čte datové členy, které nejsou vlastnosti závislostí. (Zděděno od Freezable) |
SetCurrentValue(DependencyProperty, Object) |
Nastaví hodnotu vlastnosti závislosti beze změny jejího zdroje hodnoty. (Zděděno od DependencyObject) |
SetValue(DependencyProperty, Object) |
Nastaví místní hodnotu vlastnosti závislosti určenou 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 DependencyPropertyKey identifikátorem vlastnosti závislosti. (Zděděno od DependencyObject) |
ShouldSerializeProperty(DependencyProperty) |
Vrátí hodnotu, která označuje, zda serializační procesy 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 Freezable a vyvolá jeho OnChanged() metodu. Třídy odvozené z Freezable by měly tuto metodu volat 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 objekt není zamrznutý a že se k němu přistupuje z platného kontextu podprocesů. Freezable Dědiče by tuto metodu měli volat na začátku jakéhokoli rozhraní API, které zapisuje do datových členů, které nejsou vlastnosti závislostí. (Zděděno od Freezable) |
Událost
Changed |
Vyvolá se při změně objektu Freezable nebo objektu, který obsahuje. (Zděděno od Freezable) |