Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O exemplo a seguir mostra como conectar um RoutedCommand a um Control que tem suporte interno para o comando. Para obter um exemplo completo que conecta comandos a várias fontes, consulte o exemplo Criar um exemplo de RoutedCommand personalizado .
Exemplo
O Windows Presentation Foundation (WPF) fornece uma biblioteca de comandos comuns que os programadores de aplicativos encontram regularmente. As classes que compõem a biblioteca de comandos são: ApplicationCommands, , ComponentCommands, NavigationCommands, MediaCommandse EditingCommands.
Os objetos estáticos RoutedCommand que compõem essas classes não fornecem lógica de comando. A lógica do comando está associada ao comando com um CommandBinding. Alguns controles foram integrados ao CommandBindings para alguns comandos. Esse mecanismo permite que a semântica de um comando permaneça a mesma, enquanto a implementação real pode ser alterada. Um TextBox, por exemplo, manipula o Paste comando de forma diferente de um controle projetado para dar suporte a imagens, mas a ideia básica do que significa colar algo permanece a mesma. A lógica de comando não pode ser fornecida pelo comando, mas deve ser fornecida pelo controle ou pelo aplicativo.
Muitos controles no WPF têm suporte interno para alguns dos comandos na biblioteca de comandos. TextBox, por exemplo, dá suporte a muitos dos comandos de edição de aplicativo, como Paste, , Copy, Cute RedoUndo. O desenvolvedor de aplicativos não precisa fazer nada especial para que esses comandos funcionem com esses controles. Se for o TextBox destino de comando quando o comando for executado, ele manipulará o comando usando o CommandBinding que é integrado ao controle.
O exemplo a seguir mostra como usar uma MenuItem fonte de comando para o Paste comando, em que um TextBox é o destino do comando. Toda a lógica que define como o TextBox executa a colagem está incorporada ao controle TextBox.
Um MenuItem é criado e sua Command propriedade é definida como o Paste comando. CommandTarget não está explicitamente atribuído ao objeto TextBox. Quando o CommandTarget não está definido, o destino para o comando é o elemento que tem o foco do teclado. Se o elemento que tem o foco do teclado não suportar o comando Paste ou não puder executar o comando de colagem (se, por exemplo, a área de transferência estiver vazia), o MenuItem ficará desativado.
<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 também
- Visão Geral de Comando
- Conectar um comando a um controle sem suporte a comandos
.NET Desktop feedback