Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I följande exempel visas hur du ansluter en RoutedCommand till en Control som har inbyggt stöd för kommandot. Ett fullständigt exempel som kopplar kommandon till flera källor finns i exemplet Skapa ett anpassat RoutedCommand-exempel.
Exempel
Windows Presentation Foundation (WPF) tillhandahåller ett bibliotek med vanliga kommandon som programprogram programmerare möter regelbundet. Klasserna som utgör kommandobiblioteket är: ApplicationCommands, ComponentCommands, NavigationCommands, MediaCommandsoch EditingCommands.
De statiska RoutedCommand objekt som utgör dessa klasser tillhandahåller inte kommandologik. Logiken för kommandot är kopplad till kommandot med en CommandBinding. Vissa kontroller har inbyggda CommandBindings för vissa kommandon. Med den här mekanismen kan semantiken för ett kommando förbli densamma, medan den faktiska implementeringen kan ändras. En TextBoxhanterar till exempel kommandot Paste på ett annat sätt än en kontroll som är utformad för att stödja bilder, men den grundläggande idén om vad det innebär att klistra in något förblir densamma. Kommandologiken kan inte anges av kommandot, utan måste snarare anges av kontrollen eller programmet.
Många kontroller i WPF har inbyggt stöd för vissa av kommandona i kommandobiblioteket. TextBoxstöder till exempel många av programredigeringskommandona, till exempel Paste, Copy, Cut, Redooch Undo. Programutvecklaren behöver inte göra något speciellt för att få dessa kommandon att fungera med dessa kontroller. Om TextBox är kommandomålet när kommandot körs hanterar det kommandot med hjälp av den CommandBinding som är inbyggd i kontrollen.
Följande visar hur du använder en MenuItem som kommandokälla för kommandot Paste, där en TextBox är målet för kommandot. All logik som definierar hur TextBox utför klistra-in är inbyggd i TextBox-kontrollen.
En MenuItem skapas och egenskapen Command är inställd på kommandot Paste. CommandTarget är inte uttryckligen inställt till TextBox-objektet. När CommandTarget inte har angetts är målet för kommandot elementet som har tangentbordsfokus. Om elementet som har tangentbordsfokus inte stöder kommandot Paste eller för närvarande inte kan köra kommandot klistra in (Urklipp är tomt, till exempel) skulle MenuItem vara nedtonat.
<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
Se även
.NET Desktop feedback