Sdílet prostřednictvím


InputBinding Třída

Definice

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í GestureKeyvlastnosti , GestureModifiera 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 true.

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

Platí pro

Viz také