InputBinding Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa uma ligação entre um InputGesture e um comando. O comando é potencialmente um 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
- Herança
- Herança
- Derivado
- Implementações
Exemplos
O exemplo seguinte mostra como usar a KeyBinding para associar a KeyGesture ao Open comando. Quando o gesto de tecla é executado, é invocado o comando Open.
<Window.InputBindings>
<KeyBinding Key="B"
Modifiers="Control"
Command="ApplicationCommands.Open" />
</Window.InputBindings>
Os exemplos seguintes mostram como associar um comando personalizado a InputBinding objetos. Estes exemplos criam uma aplicação que permite ao utilizador alterar a cor de fundo realizando uma das seguintes ações:
Clicar num botão.
A pressionar CTRL+C.
Clicando com o botão direito num StackPanel (fora do ListBox).
O primeiro exemplo cria uma classe chamada SimpleDelegateCommand. Esta classe aceita um delegado para que o objeto que cria o comando possa definir a ação que ocorre quando o comando é executado.
SimpleDelegateCommand também define propriedades que especificam que tecla e entrada do rato invocam o comando.
GestureKey e GestureModifier especificar a entrada do teclado; MouseGesture especifica a entrada do rato.
// 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
O exemplo seguinte cria e inicializa o ColorChangeCommand, que é um SimpleDelegateCommand. O exemplo também define o método que executa quando o comando é invocado e define as GestureKeypropriedades , GestureModifier, e MouseGesture . Uma aplicação chamaria o InitializeCommand método quando o programa começa, como no construtor de um 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
Finalmente, o exemplo seguinte cria a interface de utilizador. O exemplo acrescenta a KeyBinding e a MouseBinding a StackPanel a que contém a Button e um ListBox. Quando o utilizador seleciona um item no ListBox, pode alterar a cor do fundo para a cor selecionada. Em cada caso, a CommandParameter propriedade está ligada ao item selecionado no ListBox, e a Command propriedade está ligada ao ColorChangeCommand. As KeyBinding.Keypropriedades , KeyBinding.Modifiers, e MouseBinding.MouseAction estão ligadas às propriedades correspondentes na SimpleDelegateCommand classe.
<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>
Observações
Pode especificar que a entrada do utilizador invoca um comando criando um InputBindingcomando . Quando o utilizador executa a entrada especificada, o ICommand que é definido para a Command propriedade é executado.
Pode especificar que o InputBinding invoca um comando definido num objeto criando uma ligação nas Commandpropriedades , CommandParameter, e CommandTarget . Isto permite-lhe definir um comando personalizado e associá-lo à entrada do utilizador. Para mais informações, consulte o segundo exemplo na secção Exemplos.
An InputBinding pode ser definido num objeto específico ou ao nível da classe ao registar a RegisterClassInputBinding com o CommandManager.
A InputBinding própria classe não suporta o uso de XAML porque não expõe um construtor público sem parâmetros (existe um construtor sem parâmetros, mas está protegido). No entanto, classes derivadas podem expor um construtor público e, portanto, podem definir propriedades na classe derivada que são herdadas com InputBinding um uso XAML. Duas classes existentes InputBindingderivadas em que podem ser instanciadas em XAML e podem definir propriedades em XAML são KeyBinding e MouseBinding. A propriedade típica na programação WPF que está definida em XAML e toma um ou mais objetos InputBinding como valores é a propriedade UIElement.InputBindings.
Uso do elemento de objeto XAML
< inputVinculdingDerivedClass.../>
Valores XAML
inputBindingDerivedClass Uma classe derivada de InputBinding que suporta sintaxe de elementos objeto, como KeyBinding ou MouseBinding. Ver Observações.
Construtores
| Name | Description |
|---|---|
| InputBinding() |
Fornece inicialização base para classes derivadas de InputBinding. |
| InputBinding(ICommand, InputGesture) |
Inicializa uma nova instância da InputBinding classe com o comando e o gesto de entrada especificados. |
Campos
| Name | Description |
|---|---|
| CommandParameterProperty |
Identifica a CommandParameter propriedade de dependência. |
| CommandProperty |
Identifica a Command propriedade de dependência. |
| CommandTargetProperty |
Identifica a CommandTarget propriedade de dependência. |
Propriedades
| Name | Description |
|---|---|
| CanFreeze |
Obtém um valor que indica se o objeto pode ser tornado inmodificável. (Herdado de Freezable) |
| Command |
Obtém ou define o ICommand associado a esta ligação de entrada. |
| CommandParameter |
Obtém ou define os dados específicos de comando para um comando em particular. |
| CommandTarget |
Obtém ou define o elemento alvo do comando. |
| DependencyObjectType |
Obtém o DependencyObjectType que envolve o tipo CLR desta instância. (Herdado de DependencyObject) |
| Dispatcher |
Percebe o Dispatcher que isto DispatcherObject está associado. (Herdado de DispatcherObject) |
| Gesture |
Obtém ou define o InputGesture associado a esta ligação de entrada. |
| IsFrozen |
Recebe um valor que indica se o objeto é atualmente modificável. (Herdado de Freezable) |
| IsSealed |
Recebe um valor que indica se esta instância está atualmente selada (apenas leitura). (Herdado de DependencyObject) |
Métodos
| Name | Description |
|---|---|
| CheckAccess() |
Determina se o thread que chama tem acesso a este DispatcherObject. (Herdado de DispatcherObject) |
| ClearValue(DependencyProperty) |
Limpa o valor local de uma propriedade. A propriedade a ser limpa é especificada por um DependencyProperty identificador. (Herdado de DependencyObject) |
| ClearValue(DependencyPropertyKey) |
Limpa o valor local de uma propriedade de apenas leitura. O imóvel a ser limpo é especificado por um DependencyPropertyKey. (Herdado de DependencyObject) |
| Clone() |
Cria um clone modificável do Freezable, fazendo cópias profundas dos valores do objeto. Ao copiar as propriedades de dependência do objeto, este método copia expressões (que podem deixar de se resolver), mas não as animações nem os seus valores atuais. (Herdado de Freezable) |
| CloneCore(Freezable) |
Copia os valores base (não animados) das propriedades do objeto especificado. |
| CloneCurrentValue() |
Cria um clone modificável (cópia profunda) do Freezable usando os seus valores atuais. (Herdado de Freezable) |
| CloneCurrentValueCore(Freezable) |
Copia os valores atuais das propriedades do objeto especificado. |
| CoerceValue(DependencyProperty) |
Coage o valor da propriedade de dependência especificada. Isto é conseguido invocando qualquer CoerceValueCallback função especificada nos metadados da propriedade para a propriedade de dependência tal como existe na chamada DependencyObject. (Herdado de DependencyObject) |
| CreateInstance() |
Inicializa uma nova instância da Freezable classe. (Herdado de Freezable) |
| CreateInstanceCore() |
Cria uma instância de um InputBinding. |
| Equals(Object) |
Determina se um fornecido DependencyObject é equivalente à corrente DependencyObject. (Herdado de DependencyObject) |
| Freeze() |
Torna o objeto atual immodificável e define a sua IsFrozen propriedade como |
| FreezeCore(Boolean) |
Torna o Freezable objeto immodificável ou testa se pode ser tornado immodificável. (Herdado de Freezable) |
| GetAsFrozen() |
Cria uma cópia congelada do Freezable, usando valores base (não animados) da propriedade. Como a cópia está congelada, quaisquer subobjetos congelados são copiados por referência. (Herdado de Freezable) |
| GetAsFrozenCore(Freezable) |
Torna a instância um clone congelado do especificado Freezable usando valores base (não animados). |
| GetCurrentValueAsFrozen() |
Cria uma cópia congelada do Freezable usando os valores atuais das propriedades. Como a cópia está congelada, quaisquer subobjetos congelados são copiados por referência. (Herdado de Freezable) |
| GetCurrentValueAsFrozenCore(Freezable) |
Torna a instância atual um clone congelado do especificado Freezable. Se o objeto tiver propriedades de dependência animadas, os seus valores animados atuais são copiados. |
| GetHashCode() |
Obtém um código de hash para isto DependencyObject. (Herdado de DependencyObject) |
| GetLocalValueEnumerator() |
Cria um enumerador especializado para determinar quais as propriedades de dependência que têm valores localmente definidos neste DependencyObject. (Herdado de DependencyObject) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| GetValue(DependencyProperty) |
Devolve o valor efetivo atual de uma propriedade de dependência nesta instância de um DependencyObject. (Herdado de DependencyObject) |
| InvalidateProperty(DependencyProperty) |
Reavalia o valor efetivo da propriedade de dependência especificada. (Herdado de DependencyObject) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| OnChanged() |
Chamada quando o objeto atual Freezable é modificado. (Herdado de Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
Este membro suporta a infraestrutura Windows Presentation Foundation (WPF) e não foi concebido para ser usado diretamente a partir do seu código. (Herdado de Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Assegura que os apontadores de contexto apropriados são estabelecidos para um DependencyObjectType membro de dados que acabou de ser definido. (Herdado de Freezable) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Invocado sempre que o valor efetivo de qualquer propriedade de dependência disto DependencyObject for atualizado. A propriedade específica da dependência que mudou é reportada nos dados do evento. (Herdado de DependencyObject) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Sobrepõe a DependencyObject implementação de OnPropertyChanged(DependencyPropertyChangedEventArgs) para também invocar quaisquer Changed manipuladores em resposta a uma alteração da propriedade de dependência do tipo Freezable. (Herdado de Freezable) |
| ReadLocalValue(DependencyProperty) |
Devolve o valor local de uma propriedade de dependência, se esta existir. (Herdado de DependencyObject) |
| ReadPreamble() |
Garante que está a ser acedido Freezable a partir de um thread válido. Os herdeiros de Freezable devem chamar este método no início de qualquer API que leia membros de dados que não são propriedades de dependência. (Herdado de Freezable) |
| SetCurrentValue(DependencyProperty, Object) |
Define o valor de uma propriedade de dependência sem alterar a sua fonte de valor. (Herdado de DependencyObject) |
| SetValue(DependencyProperty, Object) |
Define o valor local de uma propriedade de dependência, especificado pelo seu identificador de propriedade de dependência. (Herdado de DependencyObject) |
| SetValue(DependencyPropertyKey, Object) |
Define o valor local de uma propriedade de dependência somente de leitura, especificado pelo DependencyPropertyKey identificador da propriedade de dependência. (Herdado de DependencyObject) |
| ShouldSerializeProperty(DependencyProperty) |
Devolve um valor que indica se os processos de serialização devem serializar o valor da propriedade de dependência fornecida. (Herdado de DependencyObject) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| VerifyAccess() |
Faz cumprir que o thread que chama tem acesso a este DispatcherObject. (Herdado de DispatcherObject) |
| WritePostscript() |
Eleva o Changed evento para o Freezable e invoca o seu OnChanged() método. As classes que derivam de Freezable devem chamar este método no final de qualquer API que modifique membros de classe que não estejam armazenados como propriedades de dependência. (Herdado de Freezable) |
| WritePreamble() |
Verifica se o Freezable não está congelado e que está a ser acedido a partir de um contexto de threading válido. Freezable os herdeiros devem chamar este método no início de qualquer API que escreva para membros de dados que não sejam propriedades de dependência. (Herdado de Freezable) |
evento
| Name | Description |
|---|---|
| Changed |
Ocorre quando o Freezable ou um objeto que contém é modificado. (Herdado de Freezable) |