InputBinding Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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ítja |
| 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) |