InputBinding Osztály

Definíció

Egy és egy parancs közötti InputGesture kötést jelöl. A parancs lehet egy 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
Öröklődés
Öröklődés
Származtatott
Megvalósítás

Példák

Az alábbi példa bemutatja, hogyan lehet KeyBinding egy parancsot a parancshoz KeyGesture kötniOpen. A kulcsmozdulat végrehajtásakor a rendszer meghívja a Megnyitás parancsot.

<Window.InputBindings>
  <KeyBinding Key="B"
              Modifiers="Control" 
              Command="ApplicationCommands.Open" />
</Window.InputBindings>

Az alábbi példák bemutatják, hogyan lehet egyéni parancsokat objektumokhoz InputBinding kötni. Ezek a példák létrehoznak egy alkalmazást, amely lehetővé teszi a felhasználó számára a háttérszín módosítását az alábbi műveletek egyikének végrehajtásával:

  • Kattintson egy gombra.

  • Nyomja le a CTRL+C billentyűkombinációt.

  • Kattintson a jobb gombbal a (külső) elemre StackPanel .ListBox

Az első példa létrehoz egy osztályt SimpleDelegateCommand. Ez az osztály elfogad egy delegáltat, hogy a parancsot létrehozó objektum definiálhassa a parancs végrehajtásakor előforduló műveletet. SimpleDelegateCommand olyan tulajdonságokat is meghatároz, amelyek meghatározzák, hogy melyik kulcs- és egérbemenet hívja meg a parancsot. GestureKey és GestureModifier adja meg a billentyűzet bemenetét; MouseGesture megadja az egér bemenetét.

 // 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

Az alábbi példa létrehozza és inicializálja az ColorChangeCommand, ami egy SimpleDelegateCommand. A példa azt a metódust is meghatározza, amely a parancs meghívásakor fut, és beállítja az , GestureKeyés GestureModifier a MouseGesturetulajdonságokat. Egy alkalmazás meghívja a metódust InitializeCommand a program indításakor, például egy konstruktorban 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

Végül az alábbi példa létrehozza a felhasználói felületet. A példa egy KeyBinding és egy MouseBinding olyan elemet StackPanel ad hozzá, amely Button egy és egy ListBox. Amikor a felhasználó kiválaszt egy elemet a ListBoxfájlban, a háttér színét a kijelölt színre módosíthatja. A tulajdonság minden esetben CommandParameter a kijelölt elemhez van kötve a ListBox, és a Command tulajdonság a ColorChangeCommand. A KeyBinding.Key, KeyBinding.Modifiersés MouseBinding.MouseAction tulajdonságok az osztály megfelelő tulajdonságaihoz SimpleDelegateCommand vannak kötve.

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

Megjegyzések

Megadhatja, hogy a felhasználói bemenet parancsot hívjon meg egy InputBinding. Amikor a felhasználó végrehajtja a megadott bemenetet, a rendszer végrehajtja a ICommandCommand tulajdonságra beállított értéket.

Megadhatja, hogy a InputBinding parancs egy objektumon definiált parancsot hívjon meg, ha létrehoz egy kötést a , Commandés CommandParameter a CommandTargettulajdonságok között. Ez lehetővé teszi egy egyéni parancs definiálásához és a felhasználói bemenethez való társításához. További információt a Példák szakaszban található második példában talál.

Egy InputBinding adott objektumon vagy osztályszinten definiálható, ha regisztrál egy RegisterClassInputBinding adott objektumot a CommandManager.

Maga az InputBinding osztály nem támogatja az XAML használatát, mert nem tesz közzé nyilvános paraméter nélküli konstruktort (van paraméter nélküli konstruktor, de védett). A származtatott osztályok azonban közzétehetnek egy nyilvános konstruktort, ezért beállíthatnak tulajdonságokat az XAML-használattal öröklő származtatott osztályon InputBinding . Két meglévő InputBinding-származtatott osztály, amelyek az XAML-ben példányosíthatók, és az XAML-ben KeyBinding megadhatók a tulajdonságok.MouseBinding Az XAML-ben beállított WPF programozás tipikus tulajdonsága, amely egy vagy több InputBinding objektumot vesz fel értékként, az UIElement.InputBindings tulajdonság.

XAML objektumelem-használat

< inputBindingDerivedClass.../>

XAML-értékek

inputBindingDerivedClass Olyan származtatott osztály, amely támogatja az InputBinding objektumelem szintaxisát, például KeyBinding vagy MouseBinding. Lásd: Megjegyzések.

Konstruktorok

Name Description
InputBinding()

Alap inicializálást biztosít a forrásból InputBindingszármaztatott osztályokhoz.

InputBinding(ICommand, InputGesture)

Inicializálja az osztály új példányát InputBinding a megadott paranccsal és beviteli kézmozdulattal.

Mezők

Name Description
CommandParameterProperty

Azonosítja a CommandParameter függőségi tulajdonságot.

CommandProperty

Azonosítja a Command függőségi tulajdonságot.

CommandTargetProperty

Azonosítja a CommandTarget függőségi tulajdonságot.

Tulajdonságok

Name Description
CanFreeze

Olyan értéket kap, amely jelzi, hogy az objektum módosítható-e.

(Öröklődés forrása Freezable)
Command

Lekéri vagy beállítja a ICommand bemeneti kötéshez társított értéket.

CommandParameter

Lekéri vagy beállítja egy adott parancs parancsspecifikus adatait.

CommandTarget

Lekéri vagy beállítja a parancs célelemét.

DependencyObjectType

Lekéri a DependencyObjectType példány CLR-típusát körbefuttatót.

(Öröklődés forrása DependencyObject)
Dispatcher

Lekérdezi, Dispatcher hogy ez a társítva van-e DispatcherObject .

(Öröklődés forrása DispatcherObject)
Gesture

Lekéri vagy beállítja a InputGesture bemeneti kötéshez társított értéket.

IsFrozen

Olyan értéket kap, amely jelzi, hogy az objektum jelenleg módosítható-e.

(Öröklődés forrása Freezable)
IsSealed

Olyan értéket kap, amely jelzi, hogy a példány jelenleg zárolva van-e (írásvédett).

(Öröklődés forrása DependencyObject)

Metódusok

Name Description
CheckAccess()

Meghatározza, hogy a hívó szál hozzáfér-e ehhez DispatcherObject.

(Öröklődés forrása DispatcherObject)
ClearValue(DependencyProperty)

Törli egy tulajdonság helyi értékét. A törölni kívánt tulajdonságot egy DependencyProperty azonosító határozza meg.

(Öröklődés forrása DependencyObject)
ClearValue(DependencyPropertyKey)

Törli egy írásvédett tulajdonság helyi értékét. A törölni kívánt tulajdonságot egy DependencyPropertyKey.

(Öröklődés forrása DependencyObject)
Clone()

Módosítható klónt hoz létre az Freezableobjektumról, amely az objektum értékeinek részletes másolatát készíti el. Az objektum függőségi tulajdonságainak másolásakor ez a metódus kifejezéseket másol (amelyek már nem oldhatók fel), de nem animációkat vagy azok aktuális értékeit.

(Öröklődés forrása Freezable)
CloneCore(Freezable)

Másolja a megadott objektum tulajdonságainak alapértékét (nem animált).

CloneCurrentValue()

Módosítható klónt (mély másolatot) hoz létre az Freezable aktuális értékek használatával.

(Öröklődés forrása Freezable)
CloneCurrentValueCore(Freezable)

Másolja a megadott objektum tulajdonságainak aktuális értékeit.

CoerceValue(DependencyProperty)

A megadott függőségi tulajdonság értékét kényszeríti. Ez úgy érhető el, hogy meghívja a függőségi tulajdonság tulajdonság metaadataiban megadott függvényeket CoerceValueCallback a hívás DependencyObjectsorán.

(Öröklődés forrása DependencyObject)
CreateInstance()

Inicializálja a Freezable osztály új példányát.

(Öröklődés forrása Freezable)
CreateInstanceCore()

Létrehoz egy példányt egy InputBinding.

Equals(Object)

Meghatározza, hogy a megadott DependencyObject érték megegyezik-e az aktuális DependencyObjectértékével.

(Öröklődés forrása DependencyObject)
Freeze()

Az aktuális objektum nem módosítható, és a tulajdonságát a következőre IsFrozenállítjatrue: .

(Öröklődés forrása Freezable)
FreezeCore(Boolean)

Freezable Az objektum nem módosíthatóvá válik, vagy teszteli, hogy módosítható-e.

(Öröklődés forrása Freezable)
GetAsFrozen()

Az alaptulajdonságok Freezable(nem animált) értékeinek egy fagyasztott másolatát hozza létre. Mivel a másolat le van fagyasztva, a program hivatkozással másolja a befagyott alobjektumokat.

(Öröklődés forrása Freezable)
GetAsFrozenCore(Freezable)

A példányt alap (nem animált) tulajdonságértékek használatával a megadott Freezable zárolt klónává teszi.

GetCurrentValueAsFrozen()

Az aktuális tulajdonságértékek fagyasztott másolatát Freezable hozza létre. Mivel a másolat le van fagyasztva, a program hivatkozással másolja a befagyott alobjektumokat.

(Öröklődés forrása Freezable)
GetCurrentValueAsFrozenCore(Freezable)

Az aktuális példányt a megadott Freezablezárolt klónává teszi. Ha az objektum animált függőségi tulajdonságokkal rendelkezik, a program átmásolja az aktuális animált értékeket.

GetHashCode()

Ehhez lekéri a DependencyObjectkivonatkódot.

(Öröklődés forrása DependencyObject)
GetLocalValueEnumerator()

Létrehoz egy speciális enumerátort annak meghatározásához, hogy mely függőségi tulajdonságok rendelkeznek helyileg beállított értékekkel.DependencyObject

(Öröklődés forrása DependencyObject)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
GetValue(DependencyProperty)

Egy függőségi tulajdonság aktuális tényleges értékét adja vissza az adott példányon DependencyObject.

(Öröklődés forrása DependencyObject)
InvalidateProperty(DependencyProperty)

Újra kiértékeli a megadott függőségi tulajdonság tényleges értékét.

(Öröklődés forrása DependencyObject)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
OnChanged()

Az aktuális Freezable objektum módosításakor hívható meg.

(Öröklődés forrása Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

Ez a tag támogatja a Windows megjelenítési alaprendszer (WPF) infrastruktúrát, és nem közvetlenül a kódból való használatra szolgál.

(Öröklődés forrása Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject)

Biztosítja, hogy a megfelelő környezeti mutatók létre legyenek hozva az DependencyObjectType éppen beállított adattagok számára.

(Öröklődés forrása Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Akkor hívjuk meg, ha az adott DependencyObject függőségi tulajdonság tényleges értéke frissült. A módosított függőségi tulajdonságot az eseményadatok jelentik.

(Öröklődés forrása DependencyObject)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Felülbírálja a DependencyObject változó típusú függőségi tulajdonságra válaszul a kezelők meghívásának OnPropertyChanged(DependencyPropertyChangedEventArgs)Changedvégrehajtását Freezable is.

(Öröklődés forrása Freezable)
ReadLocalValue(DependencyProperty)

Egy függőségi tulajdonság helyi értékét adja vissza, ha létezik.

(Öröklődés forrása DependencyObject)
ReadPreamble()

Biztosítja, hogy a Freezable rendszer érvényes szálról legyen elérhető. A metódus öröklőinek Freezable minden olyan API elején meg kell hívniuk ezt a metódust, amely olyan adattagokat olvas be, amelyek nem függőségi tulajdonságok.

(Öröklődés forrása Freezable)
SetCurrentValue(DependencyProperty, Object)

Beállítja egy függőségi tulajdonság értékét az értékforrás módosítása nélkül.

(Öröklődés forrása DependencyObject)
SetValue(DependencyProperty, Object)

Beállítja egy függőségi tulajdonság helyi értékét, amelyet a függőségi tulajdonság azonosítója határoz meg.

(Öröklődés forrása DependencyObject)
SetValue(DependencyPropertyKey, Object)

Beállítja egy írásvédett függőség tulajdonság helyi értékét, amelyet a DependencyPropertyKey függőségi tulajdonság azonosítója határoz meg.

(Öröklődés forrása DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Olyan értéket ad vissza, amely jelzi, hogy a szerializálási folyamatok szerializálják-e a megadott függőségi tulajdonság értékét.

(Öröklődés forrása DependencyObject)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)
VerifyAccess()

Kényszeríti, hogy a hívószál hozzáférhessen ehhez.DispatcherObject

(Öröklődés forrása DispatcherObject)
WritePostscript()

Elindítja az Changed eseményt, Freezable és meghívja annak metódusát OnChanged() . A származtatott Freezable osztályoknak ezt a metódust minden olyan API végén kell meghívni, amely módosítja a nem függőségi tulajdonságokként tárolt osztálytagokat.

(Öröklődés forrása Freezable)
WritePreamble()

Ellenőrzi, hogy a Freezable rendszer nem zárolta-e a elemet, és hogy az érvényes szálkezelési környezetből van-e elérhető. Freezable Az öröklőknek ezt a metódust minden olyan API elején kell meghívni, amely nem függőségi tulajdonságokat tartalmazó adattagoknak ír.

(Öröklődés forrása Freezable)

esemény

Name Description
Changed

Akkor fordul elő, ha a Freezable benne lévő objektum vagy objektum módosul.

(Öröklődés forrása Freezable)

A következőre érvényes:

Lásd még