Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Contoh ini menunjukkan cara membuat RoutedCommand kustom dan cara mengimplementasikan perintah kustom dengan membuat ExecutedRoutedEventHandler dan CanExecuteRoutedEventHandler dan melampirkannya ke CommandBinding. Untuk informasi selengkapnya tentang perintah, lihat Ringkasan Perintah.
Contoh
Langkah pertama dalam membuat RoutedCommand adalah menentukan perintah dan membuat instansnya.
public static RoutedCommand CustomRoutedCommand = new RoutedCommand();
Public Shared CustomRoutedCommand As New RoutedCommand()
Untuk menggunakan perintah dalam aplikasi, penanganan aktivitas yang menentukan apa yang dilakukan perintah harus dibuat
private void ExecutedCustomCommand(object sender,
ExecutedRoutedEventArgs e)
{
MessageBox.Show("Custom Command Executed");
}
Private Sub ExecutedCustomCommand(ByVal sender As Object, ByVal e As ExecutedRoutedEventArgs)
MessageBox.Show("Custom Command Executed")
End Sub
// CanExecuteRoutedEventHandler that only returns true if
// the source is a control.
private void CanExecuteCustomCommand(object sender,
CanExecuteRoutedEventArgs e)
{
Control target = e.Source as Control;
if(target != null)
{
e.CanExecute = true;
}
else
{
e.CanExecute = false;
}
}
' CanExecuteRoutedEventHandler that only returns true if
' the source is a control.
Private Sub CanExecuteCustomCommand(ByVal sender As Object, ByVal e As CanExecuteRoutedEventArgs)
Dim target As Control = TryCast(e.Source, Control)
If target IsNot Nothing Then
e.CanExecute = True
Else
e.CanExecute = False
End If
End Sub
Selanjutnya, CommandBinding dibuat yang mengaitkan perintah dengan penanganan aktivitas. CommandBinding dibuat pada objek tertentu. Objek ini mendefinisikan cakupan CommandBinding di pohon elemen
<Window x:Class="SDKSamples.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:custom="clr-namespace:SDKSamples"
Height="600" Width="800"
>
<Window.CommandBindings>
<CommandBinding Command="{x:Static custom:Window1.CustomRoutedCommand}"
Executed="ExecutedCustomCommand"
CanExecute="CanExecuteCustomCommand" />
</Window.CommandBindings>
CommandBinding customCommandBinding = new CommandBinding(
CustomRoutedCommand, ExecutedCustomCommand, CanExecuteCustomCommand);
// attach CommandBinding to root window
this.CommandBindings.Add(customCommandBinding);
Dim customCommandBinding As New CommandBinding(CustomRoutedCommand, AddressOf ExecutedCustomCommand, AddressOf CanExecuteCustomCommand)
' attach CommandBinding to root window
Me.CommandBindings.Add(customCommandBinding)
Langkah terakhir adalah memanggil perintah . Salah satu cara untuk memanggil perintah adalah dengan mengaitkannya dengan ICommandSource, seperti Button.
<StackPanel>
<Button Command="{x:Static custom:Window1.CustomRoutedCommand}"
Content="CustomRoutedCommand"/>
</StackPanel>
// create the ui
StackPanel CustomCommandStackPanel = new StackPanel();
Button CustomCommandButton = new Button();
CustomCommandStackPanel.Children.Add(CustomCommandButton);
CustomCommandButton.Command = CustomRoutedCommand;
' create the ui
Dim CustomCommandStackPanel As New StackPanel()
Dim CustomCommandButton As New Button()
CustomCommandStackPanel.Children.Add(CustomCommandButton)
CustomCommandButton.Command = CustomRoutedCommand
Saat Tombol diklik, metode Execute pada RoutedCommand kustom dipanggil. RoutedCommand meningkatkan peristiwa PreviewExecuted dan Executed yang dirutekan. Peristiwa ini melintasi pohon elemen mencari CommandBinding untuk perintah khusus ini. Jika CommandBinding ditemukan, ExecutedRoutedEventHandler yang terkait dengan CommandBinding dipanggil.
Lihat juga
.NET Desktop feedback