Sdílet prostřednictvím


InputBinding Třída

Definice

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 true.

(Zděděno od Freezable)
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)

Platí pro

Viz také