Cara: Menghubungkan Perintah ke Kontrol dengan Dukungan Perintah
Contoh berikut menunjukkan cara menghubungkan RoutedCommand ke yang Control telah membangun dukungan untuk perintah . Untuk sampel lengkap yang menghubungkan perintah ke beberapa sumber, lihat sampel Buat 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, NavigationCommandsMediaCommands, dan EditingCommands.
Objek statis RoutedCommand yang membentuk kelas-kelas ini tidak menyediakan logika perintah. Logika untuk perintah dikaitkan dengan perintah dengan CommandBinding. Beberapa kontrol telah dibangun di CommandBindings untuk beberapa perintah. Mekanisme ini memungkinkan semantik perintah untuk tetap sama, sementara implementasi aktual dapat berubah. , TextBoxmisalnya, menangani Paste perintah 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 memang telah membangun dukungan untuk beberapa perintah di pustaka perintah. TextBox, misalnya, mendukung banyak perintah edit aplikasi seperti Paste, , CopyCut, Redo, dan Undo. Pengembang aplikasi tidak perlu melakukan sesuatu yang istimewa untuk mendapatkan perintah ini untuk bekerja dengan kontrol ini. TextBox Jika adalah target perintah ketika perintah dijalankan, perintah akan menangani perintah menggunakan CommandBinding yang dibangun ke dalam kontrol.
Berikut ini memperlihatkan cara menggunakan MenuItem sebagai sumber perintah untuk Paste perintah, di mana adalah TextBox target perintah. Semua logika yang menentukan bagaimana TextBox performa tempel dibangun ke TextBox dalam kontrol.
MenuItem dibuat dan Command properti diatur ke Paste perintah . CommandTarget tidak secara eksplisit diatur ke TextBox objek. CommandTarget Ketika tidak diatur, target untuk perintah adalah elemen yang memiliki fokus keyboard. Jika elemen yang memiliki fokus keyboard tidak mendukung Paste perintah 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
Baca juga
.NET Desktop feedback