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 berikut menunjukkan cara menghubungkan RoutedCommand ke Control yang memiliki dukungan bawaan untuk perintah. Untuk sampel lengkap yang menghubungkan perintah ke beberapa sumber, lihat sampel Membuat Sampel RoutedCommand Kustom.
Contoh
Windows Presentation Foundation (WPF) menyediakan pustaka perintah umum yang ditemui programmer aplikasi secara teratur. Kelas yang terdiri dari pustaka perintah adalah: ApplicationCommands, ComponentCommands, NavigationCommands, MediaCommands, dan EditingCommands.
Objek RoutedCommand statis yang membentuk kelas-kelas ini tidak menyediakan logika perintah. Logika untuk perintah terkait dengan perintah CommandBinding. Beberapa kontrol telah dibangun di CommandBindings untuk beberapa perintah. Mekanisme ini memungkinkan semantik perintah untuk tetap sama, sementara implementasi aktual dapat berubah. TextBox, misalnya, menangani perintah Paste secara berbeda dari kontrol yang dirancang untuk mendukung gambar, tetapi gagasan dasar tentang apa artinya menempelkan sesuatu tetap sama. Logika perintah tidak dapat disediakan oleh perintah, melainkan harus disediakan oleh kontrol atau aplikasi.
Banyak kontrol di WPF memiliki dukungan bawaan untuk beberapa perintah di pustaka perintah. TextBox, misalnya, mendukung banyak perintah edit aplikasi seperti Paste, Copy, Cut, Redo, dan Undo. Pengembang aplikasi tidak perlu melakukan sesuatu yang istimewa untuk mendapatkan perintah ini untuk bekerja dengan kontrol ini. Jika TextBox adalah target perintah saat dieksekusi, perintah akan ditangani menggunakan CommandBinding yang terintegrasi dalam kontrol.
Berikut ini memperlihatkan cara menggunakan MenuItem sebagai sumber perintah untuk perintah Paste, di mana TextBox adalah target perintah. Semua logika yang menentukan bagaimana TextBox melakukan penempelan dibangun ke dalam kontrol TextBox.
MenuItem dibuat dan properti Command diatur ke perintah Paste. CommandTarget tidak diatur secara eksplisit ke objek TextBox. Saat CommandTarget tidak diatur, target untuk perintah adalah elemen yang memiliki fokus keyboard. Jika elemen yang memiliki fokus keyboard tidak mendukung perintah Paste atau saat ini tidak dapat menjalankan perintah tempel (clipboard kosong, misalnya) maka MenuItem akan berwarna abu-abu.
<Window x:Class="SDKSamples.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MenuItemCommandTask"
>
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Command="ApplicationCommands.Paste" Width="75" />
</Menu>
<TextBox BorderBrush="Black" BorderThickness="2" Margin="25"
TextWrapping="Wrap">
The MenuItem will not be enabled until
this TextBox gets keyboard focus
</TextBox>
</DockPanel>
</Window>
// Window1 constructor
public Window1()
{
InitializeComponent();
// Instantiating UIElements.
DockPanel mainPanel = new DockPanel();
Menu mainMenu = new Menu();
MenuItem pasteMenuItem = new MenuItem();
TextBox mainTextBox = new TextBox();
// Associating the MenuItem with the Paste command.
pasteMenuItem.Command = ApplicationCommands.Paste;
// Setting properties on the TextBox.
mainTextBox.Text =
"The MenuItem will not be enabled until this TextBox receives keyboard focus.";
mainTextBox.Margin = new Thickness(25);
mainTextBox.BorderBrush = Brushes.Black;
mainTextBox.BorderThickness = new Thickness(2);
mainTextBox.TextWrapping = TextWrapping.Wrap;
// Attaching UIElements to the Window.
this.AddChild(mainPanel);
mainMenu.Items.Add(pasteMenuItem);
mainPanel.Children.Add(mainMenu);
mainPanel.Children.Add(mainTextBox);
// Defining DockPanel layout.
DockPanel.SetDock(mainMenu, Dock.Top);
DockPanel.SetDock(mainTextBox, Dock.Bottom);
}
' Window1 constructor
Public Sub New()
InitializeComponent()
' Instantiating UIElements.
Dim mainPanel As New DockPanel()
Dim mainMenu As New Menu()
Dim pasteMenuItem As New MenuItem()
Dim mainTextBox As New TextBox()
' Associating the MenuItem with the Paste command.
pasteMenuItem.Command = ApplicationCommands.Paste
' Setting properties on the TextBox.
mainTextBox.Text = "The MenuItem will not be enabled until this TextBox receives keyboard focus."
mainTextBox.Margin = New Thickness(25)
mainTextBox.BorderBrush = Brushes.Black
mainTextBox.BorderThickness = New Thickness(2)
mainTextBox.TextWrapping = TextWrapping.Wrap
' Attaching UIElements to the Window.
Me.AddChild(mainPanel)
mainMenu.Items.Add(pasteMenuItem)
mainPanel.Children.Add(mainMenu)
mainPanel.Children.Add(mainTextBox)
' Defining DockPanel layout.
DockPanel.SetDock(mainMenu, Dock.Top)
DockPanel.SetDock(mainTextBox, Dock.Bottom)
End Sub
Lihat juga
.NET Desktop feedback