InputBinding Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mewakili pengikatan antara perintah InputGesture dan . Perintah berpotensi menjadi 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
- Warisan
- Warisan
- Turunan
- Penerapan
Contoh
Contoh berikut menunjukkan cara menggunakan KeyBinding untuk mengikat ke KeyGestureOpen perintah . Saat gerakan kunci dilakukan, perintah Buka dipanggil.
<Window.InputBindings>
<KeyBinding Key="B"
Modifiers="Control"
Command="ApplicationCommands.Open" />
</Window.InputBindings>
Contoh berikut menunjukkan cara mengikat perintah kustom ke InputBinding objek. Contoh-contoh ini membuat aplikasi yang memungkinkan pengguna mengubah warna latar belakang dengan melakukan salah satu tindakan berikut:
Mengklik tombol.
Menekan CTRL+C.
Mengklik kanan ( StackPanel di luar ListBox).
Contoh pertama membuat kelas bernama SimpleDelegateCommand
. Kelas ini menerima delegasi sehingga objek yang membuat perintah dapat menentukan tindakan yang terjadi saat perintah dijalankan.
SimpleDelegateCommand
juga mendefinisikan properti yang menentukan input tombol dan mouse apa yang memanggil perintah.
GestureKey
dan GestureModifier
tentukan input keyboard; MouseGesture
menentukan input mouse.
// 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
Contoh berikut membuat dan menginisialisasi ColorChangeCommand
, yang merupakan SimpleDelegateCommand
. Contoh ini juga mendefinisikan metode yang dijalankan ketika perintah dipanggil dan mengatur GestureKey
properti , GestureModifier
, dan MouseGesture
. Aplikasi akan memanggil InitializeCommand
metode ketika program dimulai, seperti di konstruktor 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
Terakhir, contoh berikut membuat antarmuka pengguna. Contoh menambahkan KeyBinding dan MouseBinding ke yang StackPanel berisi Button dan ListBox. Saat pengguna memilih item di ListBox, mereka dapat mengubah warna latar belakang menjadi warna yang dipilih. Dalam setiap kasus, CommandParameter
properti terikat ke item yang dipilih di ListBox, dan Command
properti terikat ke ColorChangeCommand
. Properti KeyBinding.Key, KeyBinding.Modifiers, dan MouseBinding.MouseAction terikat ke properti yang sesuai di SimpleDelegateCommand
kelas .
<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>
Keterangan
Anda dapat menentukan bahwa input pengguna memanggil perintah dengan membuat InputBinding. Ketika pengguna melakukan input yang ditentukan, ICommand yang diatur ke Command properti dijalankan.
Anda dapat menentukan bahwa memanggil InputBinding perintah yang ditentukan pada objek dengan membuat pengikatan pada Commandproperti , CommandParameter, dan CommandTarget . Ini memungkinkan Anda menentukan perintah kustom dan mengaitkannya dengan input pengguna. Untuk informasi selengkapnya, lihat contoh kedua di bagian Contoh.
InputBinding Dapat didefinisikan pada objek tertentu atau di tingkat kelas dengan mendaftarkan RegisterClassInputBinding dengan CommandManager.
Kelas itu InputBinding sendiri tidak mendukung penggunaan XAML karena tidak mengekspos konstruktor tanpa parameter publik (ada konstruktor tanpa parameter, tetapi dilindungi). Namun, kelas turunan dapat mengekspos konstruktor publik dan oleh karena itu dapat mengatur properti pada kelas turunan yang diwarisi dari InputBinding dengan penggunaan XAML. Dua kelas turunan InputBindingyang ada yang dapat diinstansiasi di XAML dan dapat mengatur properti di XAML adalah KeyBinding dan MouseBinding. Properti umum dalam pemrograman WPF yang diatur dalam XAML dan mengambil satu atau beberapa InputBinding objek sebagai nilai adalah UIElement.InputBindings properti .
Penggunaan Elemen Objek XAML
< inputBindingDerivedClass.../>
Nilai XAML
inputBindingDerivedClass
Kelas turunan InputBinding yang mendukung sintaks elemen objek, seperti KeyBinding atau MouseBinding. Lihat Keterangan.
Konstruktor
InputBinding() |
Menyediakan inisialisasi dasar untuk kelas yang berasal dari InputBinding. |
InputBinding(ICommand, InputGesture) |
Menginisialisasi instans InputBinding baru kelas dengan perintah dan gerakan input yang ditentukan. |
Bidang
CommandParameterProperty |
CommandParameter Mengidentifikasi properti dependensi. |
CommandProperty |
Command Mengidentifikasi properti dependensi. |
CommandTargetProperty |
CommandTarget Mengidentifikasi properti dependensi. |
Properti
CanFreeze |
Mendapatkan nilai yang menunjukkan apakah objek dapat dibuat tidak dapat dimodifikasi. (Diperoleh dari Freezable) |
Command |
Mendapatkan atau mengatur yang ICommand terkait dengan pengikatan input ini. |
CommandParameter |
Mendapatkan atau mengatur data khusus perintah untuk perintah tertentu. |
CommandTarget |
Mendapatkan atau mengatur elemen target perintah. |
DependencyObjectType |
Mendapatkan yang membungkus jenis CLR dari instans DependencyObjectType ini. (Diperoleh dari DependencyObject) |
Dispatcher |
Dispatcher Mendapatkan ini DispatcherObject dikaitkan dengan. (Diperoleh dari DispatcherObject) |
Gesture |
Mendapatkan atau mengatur yang InputGesture terkait dengan pengikatan input ini. |
IsFrozen |
Mendapatkan nilai yang menunjukkan apakah objek saat ini dapat dimodifikasi. (Diperoleh dari Freezable) |
IsSealed |
Mendapatkan nilai yang menunjukkan apakah instans ini saat ini disegel (baca-saja). (Diperoleh dari DependencyObject) |
Metode
CheckAccess() |
Menentukan apakah utas panggilan memiliki akses ke ini DispatcherObject. (Diperoleh dari DispatcherObject) |
ClearValue(DependencyProperty) |
Menghapus nilai lokal properti. Properti yang akan dibersihkan ditentukan oleh DependencyProperty pengidentifikasi. (Diperoleh dari DependencyObject) |
ClearValue(DependencyPropertyKey) |
Menghapus nilai lokal properti baca-saja. Properti yang akan dibersihkan ditentukan oleh DependencyPropertyKey. (Diperoleh dari DependencyObject) |
Clone() |
Membuat klon yang dapat dimodifikasi dari Freezable, membuat salinan mendalam dari nilai objek. Saat menyalin properti dependensi objek, metode ini menyalin ekspresi (yang mungkin tidak lagi diselesaikan) tetapi bukan animasi atau nilainya saat ini. (Diperoleh dari Freezable) |
CloneCore(Freezable) |
Menyalin nilai dasar (non-animasi) dari properti objek yang ditentukan. |
CloneCurrentValue() |
Membuat kloning yang dapat dimodifikasi (salinan mendalam) dari Freezable menggunakan nilainya saat ini. (Diperoleh dari Freezable) |
CloneCurrentValueCore(Freezable) |
Menyalin nilai properti saat ini dari objek yang ditentukan. |
CoerceValue(DependencyProperty) |
Memaksakan nilai properti dependensi yang ditentukan. Ini dicapai dengan memanggil fungsi apa pun CoerceValueCallback yang ditentukan dalam metadata properti untuk properti dependensi seperti yang ada pada panggilan DependencyObject. (Diperoleh dari DependencyObject) |
CreateInstance() |
Menginisialisasi instans baru kelas Freezable. (Diperoleh dari Freezable) |
CreateInstanceCore() |
Membuat instans dari InputBinding. |
Equals(Object) |
Menentukan apakah yang disediakan DependencyObject setara dengan saat ini DependencyObject. (Diperoleh dari DependencyObject) |
Freeze() |
Membuat objek saat ini tidak dapat dimodifikasi dan mengatur propertinya IsFrozen ke |
FreezeCore(Boolean) |
Freezable Membuat objek tidak dapat dimodifikasi atau menguji apakah dapat dibuat tidak dapat dimodifikasi. (Diperoleh dari Freezable) |
GetAsFrozen() |
Membuat salinan beku dari Freezable, menggunakan nilai properti dasar (non-animasi). Karena salinan dibekukan, sub-objek beku apa pun disalin oleh referensi. (Diperoleh dari Freezable) |
GetAsFrozenCore(Freezable) |
Menjadikan instans sebagai klon beku dari yang ditentukan Freezable dengan menggunakan nilai properti dasar (non-animasi). |
GetCurrentValueAsFrozen() |
Membuat salinan beku dari Freezable menggunakan nilai properti saat ini. Karena salinan dibekukan, sub-objek beku apa pun disalin oleh referensi. (Diperoleh dari Freezable) |
GetCurrentValueAsFrozenCore(Freezable) |
Menjadikan instans saat ini sebagai klon beku dari yang ditentukan Freezable. Jika objek memiliki properti dependensi animasi, nilai animasinya saat ini akan disalin. |
GetHashCode() |
Mendapatkan kode hash untuk ini DependencyObject. (Diperoleh dari DependencyObject) |
GetLocalValueEnumerator() |
Membuat enumerator khusus untuk menentukan properti dependensi mana yang memiliki nilai yang ditetapkan secara lokal pada ini DependencyObject. (Diperoleh dari DependencyObject) |
GetType() |
Mendapatkan dari instans Type saat ini. (Diperoleh dari Object) |
GetValue(DependencyProperty) |
Mengembalikan nilai efektif properti dependensi saat ini pada instans ini dari DependencyObject. (Diperoleh dari DependencyObject) |
InvalidateProperty(DependencyProperty) |
Mengevaluasi kembali nilai efektif untuk properti dependensi yang ditentukan. (Diperoleh dari DependencyObject) |
MemberwiseClone() |
Membuat salinan dangkal dari saat ini Object. (Diperoleh dari Object) |
OnChanged() |
Dipanggil ketika objek saat ini Freezable dimodifikasi. (Diperoleh dari Freezable) |
OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Memastikan bahwa penunjuk konteks yang sesuai ditetapkan untuk DependencyObjectType anggota data yang baru saja ditetapkan. (Diperoleh dari Freezable) |
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
Anggota ini mendukung infrastruktur Windows Presentation Foundation (WPF) dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. (Diperoleh dari Freezable) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Dipanggil setiap kali nilai efektif dari properti dependensi apa pun pada ini DependencyObject telah diperbarui. Properti dependensi tertentu yang berubah dilaporkan dalam data peristiwa. (Diperoleh dari DependencyObject) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Mengambil alih DependencyObject implementasi OnPropertyChanged(DependencyPropertyChangedEventArgs) untuk juga memanggil penangan apa pun Changed sebagai respons terhadap properti dependensi yang berubah dari jenis Freezable. (Diperoleh dari Freezable) |
ReadLocalValue(DependencyProperty) |
Mengembalikan nilai lokal properti dependensi, jika ada. (Diperoleh dari DependencyObject) |
ReadPreamble() |
Memastikan bahwa Freezable sedang diakses dari utas yang valid. Pewaris Freezable harus memanggil metode ini di awal API apa pun yang membaca anggota data yang bukan properti dependensi. (Diperoleh dari Freezable) |
SetCurrentValue(DependencyProperty, Object) |
Mengatur nilai properti dependensi tanpa mengubah sumber nilainya. (Diperoleh dari DependencyObject) |
SetValue(DependencyProperty, Object) |
Mengatur nilai lokal properti dependensi, yang ditentukan oleh pengidentifikasi properti dependensinya. (Diperoleh dari DependencyObject) |
SetValue(DependencyPropertyKey, Object) |
Mengatur nilai lokal properti dependensi baca-saja, yang ditentukan oleh DependencyPropertyKey pengidentifikasi properti dependensi. (Diperoleh dari DependencyObject) |
ShouldSerializeProperty(DependencyProperty) |
Mengembalikan nilai yang menunjukkan apakah proses serialisasi harus menserialisasikan nilai untuk properti dependensi yang disediakan. (Diperoleh dari DependencyObject) |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
VerifyAccess() |
Memberlakukan bahwa utas panggilan memiliki akses ke ini DispatcherObject. (Diperoleh dari DispatcherObject) |
WritePostscript() |
Menaikkan Changed peristiwa untuk Freezable dan memanggil metodenya OnChanged() . Kelas yang berasal dari Freezable harus memanggil metode ini di akhir API apa pun yang memodifikasi anggota kelas yang tidak disimpan sebagai properti dependensi. (Diperoleh dari Freezable) |
WritePreamble() |
Memverifikasi bahwa Freezable tidak dibekukan dan sedang diakses dari konteks utas yang valid. Freezable pewaris harus memanggil metode ini di awal API apa pun yang menulis ke anggota data yang bukan properti dependensi. (Diperoleh dari Freezable) |
Acara
Changed |
Terjadi ketika Freezable atau objek yang dikandungnya dimodifikasi. (Diperoleh dari Freezable) |