InputBinding Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje powiązanie między elementem a InputGesture poleceniem . Polecenie jest potencjalnie poleceniem 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
- Dziedziczenie
- Dziedziczenie
- Pochodne
- Implementuje
Przykłady
W poniższym przykładzie pokazano, jak użyć metody KeyBinding , aby powiązać element z poleceniem KeyGestureOpen . Po wykonaniu gestu klucza wywoływane jest polecenie Otwórz.
<Window.InputBindings>
<KeyBinding Key="B"
Modifiers="Control"
Command="ApplicationCommands.Open" />
</Window.InputBindings>
W poniższych przykładach pokazano, jak powiązać polecenie niestandardowe z InputBinding obiektami. W poniższych przykładach utworzono aplikację, która umożliwia użytkownikowi zmianę koloru tła, wykonując jedną z następujących akcji:
Kliknięcie przycisku.
Naciśnij klawisze CTRL+C.
Kliknięcie prawym przyciskiem myszy elementu StackPanel (poza elementem ListBox).
Pierwszy przykład tworzy klasę o nazwie SimpleDelegateCommand
. Ta klasa akceptuje delegata, aby obiekt tworzący polecenie mógł zdefiniować akcję wykonywaną po wykonaniu polecenia.
SimpleDelegateCommand
Definiuje również właściwości, które określają, jakie dane wejściowe klawisza i myszy wywołują polecenie.
GestureKey
i GestureModifier
określ dane wejściowe klawiatury; MouseGesture
określa dane wejściowe myszy.
// 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
Poniższy przykład tworzy i inicjuje ColorChangeCommand
obiekt , który jest elementem SimpleDelegateCommand
. W przykładzie zdefiniowano również metodę wykonywaną po wywołaniu polecenia i ustawić GestureKey
właściwości , GestureModifier
i MouseGesture
. Aplikacja wywoła metodę InitializeCommand
po rozpoczęciu programu, na przykład w konstruktorze klasy 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
Na koniec poniższy przykład tworzy interfejs użytkownika. Przykład dodaje element KeyBinding i MouseBinding do StackPanel elementu zawierającego element Button i .ListBox Gdy użytkownik wybierze element w elemencie ListBox, może zmienić kolor tła na wybrany kolor. W każdym przypadku CommandParameter
właściwość jest powiązana z wybranym elementem w elemencie ListBox, a Command
właściwość jest powiązana z elementem ColorChangeCommand
.
KeyBinding.KeyWłaściwości , KeyBinding.Modifiersi MouseBinding.MouseAction są powiązane z odpowiednimi właściwościami klasySimpleDelegateCommand
.
<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>
Uwagi
Możesz określić, że dane wejściowe użytkownika wywołują polecenie, tworząc element InputBinding. Gdy użytkownik wykonuje określone dane wejściowe, ICommand jest on ustawiony na Command właściwość .
Można określić, że obiekt InputBinding wywołuje polecenie zdefiniowane w obiekcie, tworząc powiązanie we właściwościach Command, CommandParameteri CommandTarget . Dzięki temu można zdefiniować polecenie niestandardowe i skojarzyć je z danymi wejściowymi użytkownika. Aby uzyskać więcej informacji, zobacz drugi przykład w sekcji Przykłady.
Element InputBinding można zdefiniować na określonym obiekcie lub na poziomie klasy, rejestrując element RegisterClassInputBinding w obiekcie CommandManager.
Sama InputBinding klasa nie obsługuje użycia XAML, ponieważ nie uwidacznia publicznego konstruktora bez parametrów (istnieje konstruktor bez parametrów, ale jest chroniony). Jednak klasy pochodne mogą uwidaczniać publiczny konstruktor i w związku z tym mogą ustawiać właściwości w klasie pochodnej dziedziczonej InputBinding z użyciem XAML. Dwie istniejące InputBindingklasy pochodne, które mogą zostać utworzone w języku XAML i mogą ustawiać właściwości w języku XAML, to KeyBinding i MouseBinding. Typowa właściwość w programowaniu WPF, która jest ustawiana w języku XAML i przyjmuje co najmniej jeden InputBinding obiekt, ponieważ wartości są właściwością UIElement.InputBindings .
Użycie elementu obiektu języka XAML
< inputBindingDerivedClass.../>
Wartości XAML
inputBindingDerivedClass
Klasa pochodna InputBinding , która obsługuje składnię elementu obiektu, taką jak KeyBinding lub MouseBinding. Zobacz uwagi.
Konstruktory
InputBinding() |
Zapewnia inicjowanie podstawowe dla klas pochodnych z InputBindingklasy . |
InputBinding(ICommand, InputGesture) |
Inicjuje InputBinding nowe wystąpienie klasy za pomocą określonego polecenia i gestu wejściowego. |
Pola
CommandParameterProperty |
Identyfikuje CommandParameter właściwość zależności. |
CommandProperty |
Identyfikuje Command właściwość zależności. |
CommandTargetProperty |
Identyfikuje CommandTarget właściwość zależności. |
Właściwości
CanFreeze |
Pobiera wartość wskazującą, czy obiekt może być niemodyfikowalny. (Odziedziczone po Freezable) |
Command |
Pobiera lub ustawia ICommand skojarzone z tym powiązaniem wejściowym. |
CommandParameter |
Pobiera lub ustawia dane specyficzne dla polecenia dla określonego polecenia. |
CommandTarget |
Pobiera lub ustawia element docelowy polecenia. |
DependencyObjectType |
DependencyObjectType Pobiera opakowujący typ clR tego wystąpienia. (Odziedziczone po DependencyObject) |
Dispatcher |
Dispatcher Pobiera tę DispatcherObject wartość skojarzona z. (Odziedziczone po DispatcherObject) |
Gesture |
Pobiera lub ustawia InputGesture skojarzone z tym powiązaniem wejściowym. |
IsFrozen |
Pobiera wartość wskazującą, czy obiekt jest obecnie modyfikowalny. (Odziedziczone po Freezable) |
IsSealed |
Pobiera wartość wskazującą, czy to wystąpienie jest obecnie zapieczętowane (tylko do odczytu). (Odziedziczone po DependencyObject) |
Metody
CheckAccess() |
Określa, czy wątek wywołujący ma dostęp do tego DispatcherObjectelementu . (Odziedziczone po DispatcherObject) |
ClearValue(DependencyProperty) |
Czyści wartość lokalną właściwości. Właściwość do wyczyszczenia jest określana przez DependencyProperty identyfikator. (Odziedziczone po DependencyObject) |
ClearValue(DependencyPropertyKey) |
Czyści wartość lokalną właściwości tylko do odczytu. Właściwość do wyczyszczenia jest określana przez DependencyPropertyKeyelement . (Odziedziczone po DependencyObject) |
Clone() |
Tworzy modyfikowalny klon obiektu Freezable, tworząc głębokie kopie wartości obiektu. Podczas kopiowania właściwości zależności obiektu ta metoda kopiuje wyrażenia (które mogą już nie być rozpoznawane), ale nie animacje ani ich bieżące wartości. (Odziedziczone po Freezable) |
CloneCore(Freezable) |
Kopiuje podstawowe (nie animowane) wartości właściwości określonego obiektu. |
CloneCurrentValue() |
Tworzy modyfikowalny klon (kopię głęboką) Freezable przy użyciu jego bieżących wartości. (Odziedziczone po Freezable) |
CloneCurrentValueCore(Freezable) |
Kopiuje bieżące wartości właściwości określonego obiektu. |
CoerceValue(DependencyProperty) |
Coerce wartość określonej właściwości zależności. Jest to realizowane przez wywołanie dowolnej CoerceValueCallback funkcji określonej w metadanych właściwości dla właściwości zależności, ponieważ istnieje w wywołaniu DependencyObject. (Odziedziczone po DependencyObject) |
CreateInstance() |
Inicjuje nowe wystąpienie klasy Freezable. (Odziedziczone po Freezable) |
CreateInstanceCore() |
Tworzy wystąpienie klasy InputBinding. |
Equals(Object) |
Określa, czy podany DependencyObject element jest odpowiednikiem bieżącego DependencyObjectelementu . (Odziedziczone po DependencyObject) |
Freeze() |
Sprawia, że bieżący obiekt jest niezmodyfikowalny i ustawia jego IsFrozen właściwość na |
FreezeCore(Boolean) |
Sprawia, Freezable że obiekt jest niezmodyfikowalny lub sprawdza, czy można go niemodyfikować. (Odziedziczone po Freezable) |
GetAsFrozen() |
Tworzy zamrożoną kopię obiektu Freezableprzy użyciu wartości właściwości base (nie animowanych). Ponieważ kopia jest zamrożona, wszystkie zamrożone obiekty podrzędne są kopiowane przez odwołanie. (Odziedziczone po Freezable) |
GetAsFrozenCore(Freezable) |
Sprawia, że wystąpienie jest zamrożonym klonem określonego Freezable przy użyciu wartości właściwości base (nie animowanych). |
GetCurrentValueAsFrozen() |
Tworzy zamrożoną kopię przy użyciu bieżących Freezable wartości właściwości. Ponieważ kopia jest zamrożona, wszystkie zamrożone obiekty podrzędne są kopiowane przez odwołanie. (Odziedziczone po Freezable) |
GetCurrentValueAsFrozenCore(Freezable) |
Sprawia, że bieżące wystąpienie jest klonem zamrożonym określonego Freezableobiektu . Jeśli obiekt ma animowane właściwości zależności, są kopiowane ich bieżące animowane wartości. |
GetHashCode() |
Pobiera kod skrótu dla tego pliku DependencyObject. (Odziedziczone po DependencyObject) |
GetLocalValueEnumerator() |
Tworzy wyspecjalizowany moduł wyliczający do określania, które właściwości zależności mają lokalnie ustawione wartości w tym DependencyObjectelemecie . (Odziedziczone po DependencyObject) |
GetType() |
Type Pobiera bieżące wystąpienie. (Odziedziczone po Object) |
GetValue(DependencyProperty) |
Zwraca bieżącą obowiązującą wartość właściwości zależności dla tego wystąpienia obiektu DependencyObject. (Odziedziczone po DependencyObject) |
InvalidateProperty(DependencyProperty) |
Ponownie oblicza efektywną wartość dla określonej właściwości zależności. (Odziedziczone po DependencyObject) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
OnChanged() |
Wywoływana po zmodyfikowaniu bieżącego Freezable obiektu. (Odziedziczone po Freezable) |
OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Zapewnia, że odpowiednie wskaźniki kontekstu są ustanawiane dla DependencyObjectType elementu członkowskiego danych, który został właśnie ustawiony. (Odziedziczone po Freezable) |
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
Ten element członkowski obsługuje infrastrukturę Windows Presentation Foundation (WPF) i nie jest przeznaczony do użycia bezpośrednio z kodu. (Odziedziczone po Freezable) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Wywoływane za każdym razem, gdy obowiązująca wartość dowolnej właściwości zależności została DependencyObject zaktualizowana. Określona właściwość zależności, która uległa zmianie, jest zgłaszana w danych zdarzenia. (Odziedziczone po DependencyObject) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Zastępuje implementację DependencyObjectOnPropertyChanged(DependencyPropertyChangedEventArgs) metody w celu wywołania wszystkich Changed procedur obsługi w odpowiedzi na zmieniającą się właściwość zależności typu Freezable. (Odziedziczone po Freezable) |
ReadLocalValue(DependencyProperty) |
Zwraca wartość lokalną właściwości zależności, jeśli istnieje. (Odziedziczone po DependencyObject) |
ReadPreamble() |
Gwarantuje, że dostęp do obiektu Freezable jest uzyskiwany z prawidłowego wątku. Dziedzicze muszą Freezable wywoływać tę metodę na początku dowolnego interfejsu API, który odczytuje elementy członkowskie danych, które nie są właściwościami zależności. (Odziedziczone po Freezable) |
SetCurrentValue(DependencyProperty, Object) |
Ustawia wartość właściwości zależności bez zmiany źródła wartości. (Odziedziczone po DependencyObject) |
SetValue(DependencyProperty, Object) |
Ustawia wartość lokalną właściwości zależności określonej przez jego identyfikator właściwości zależności. (Odziedziczone po DependencyObject) |
SetValue(DependencyPropertyKey, Object) |
Ustawia wartość lokalną właściwości zależności tylko do odczytu określona przez DependencyPropertyKey identyfikator właściwości zależności. (Odziedziczone po DependencyObject) |
ShouldSerializeProperty(DependencyProperty) |
Zwraca wartość wskazującą, czy procesy serializacji powinny serializować wartość podanej właściwości zależności. (Odziedziczone po DependencyObject) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
VerifyAccess() |
Wymusza, że wątek wywołujący ma dostęp do tego DispatcherObjectelementu . (Odziedziczone po DispatcherObject) |
WritePostscript() |
Changed Zgłasza zdarzenie dla Freezable metody i wywołuje jej OnChanged() metodę. Klasy pochodzące z Freezable programu powinny wywoływać tę metodę na końcu dowolnego interfejsu API, który modyfikuje składowe klasy, które nie są przechowywane jako właściwości zależności. (Odziedziczone po Freezable) |
WritePreamble() |
Sprawdza, czy Freezable element nie jest zamrożony i czy jest uzyskiwany dostęp do niego z prawidłowego kontekstu wątkowego. Freezable dziedzicze powinny wywoływać tę metodę na początku dowolnego interfejsu API, który zapisuje do elementów członkowskich danych, które nie są właściwościami zależności. (Odziedziczone po Freezable) |
Zdarzenia
Changed |
Występuje, gdy Freezable obiekt lub, który zawiera, jest modyfikowany. (Odziedziczone po Freezable) |