Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En el ejemplo siguiente se muestra cómo conectar un RoutedCommand a un Control que tiene soporte integrado para el comando. Para obtener un ejemplo completo en el que se conectan comandos a varios orígenes, consulte el ejemplo Crear un Ejemplo de RoutedCommand Personalizado.
Ejemplo
Windows Presentation Foundation (WPF) proporciona una biblioteca de comandos comunes que los programadores de aplicaciones encuentran con regularidad. Las clases que componen la biblioteca de comandos son: ApplicationCommands, ComponentCommands, NavigationCommands, MediaCommandsy EditingCommands.
Los objetos estáticos RoutedCommand que componen estas clases no proporcionan lógica de comandos. La lógica del comando está asociada al comando con un CommandBinding. Algunos controles han integrado CommandBindings para algunos comandos. Este mecanismo permite que la semántica de un comando permanezca igual, mientras que la implementación real puede cambiar. Un TextBox, por ejemplo, controla el Paste comando de forma diferente a un control diseñado para admitir imágenes, pero la idea básica de lo que significa pegar algo permanece igual. El comando no puede proporcionar la lógica de comandos, sino que debe ser proporcionada por el control o la aplicación.
Muchos controles de WPF tienen compatibilidad integrada con algunos de los comandos de la biblioteca de comandos. TextBox, por ejemplo, admite muchos de los comandos de edición de la aplicación, como Paste, Copy, Cut, Redoy Undo. El desarrollador de aplicaciones no tiene que hacer nada especial para que estos comandos funcionen con estos controles. TextBox Si es el destino del comando cuando se ejecuta el comando, controlará el comando mediante el CommandBinding que está integrado en el control .
A continuación se muestra cómo usar un MenuItem como origen del comando para el comando Paste, donde TextBox es el destino del comando. Toda la lógica que define cómo TextBox realiza el pegado está integrada en el TextBox control .
Se crea MenuItem y sus propiedades Command se establecen en el comando Paste. El CommandTarget no se establece explícitamente en el objeto TextBox. Cuando no se establece CommandTarget, el destino del comando es el elemento que tiene el foco del teclado. Si el elemento que tiene el foco de teclado no admite el comando Paste o no puede ejecutar el comando pegar actualmente (el portapapeles está vacío, por ejemplo), entonces el MenuItem se atenuaría.
<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
Consulte también
.NET Desktop feedback