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 não possui 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. 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 Button origem de comando para o Open comando. Um CommandBinding é criado para associar o CanExecuteRoutedEventHandler especificado e o CanExecuteRoutedEventHandler com o RoutedCommand.
Primeiro, a origem do comando é criada. Um Button é usado como a origem do comando.
<Button Command="ApplicationCommands.Open" Name="MyButton"
Height="50" Width="200">
Open (KeyBindings: Ctrl+R, Ctrl+0)
</Button>
// Button used to invoke the command
Button CommandButton = new Button();
CommandButton.Command = ApplicationCommands.Open;
CommandButton.Content = "Open (KeyBindings: Ctrl-R, Ctrl-0)";
MainStackPanel.Children.Add(CommandButton);
' Button used to invoke the command
Dim CommandButton As New Button()
CommandButton.Command = ApplicationCommands.Open
CommandButton.Content = "Open (KeyBindings: Ctrl-R, Ctrl-0)"
MainStackPanel.Children.Add(CommandButton)
Em seguida, o ExecutedRoutedEventHandler e os CanExecuteRoutedEventHandler são criados. O ExecutedRoutedEventHandler simplesmente abre um MessageBox para indicar que o comando foi executado. Define CanExecuteRoutedEventHandler a CanExecute propriedade como true. Normalmente, o manipulador de execução de comandos realizaria verificações mais robustas para ver se o comando poderia ser executado no alvo do comando atual.
void OpenCmdExecuted(object target, ExecutedRoutedEventArgs e)
{
String command, targetobj;
command = ((RoutedCommand)e.Command).Name;
targetobj = ((FrameworkElement)target).Name;
MessageBox.Show("The " + command + " command has been invoked on target object " + targetobj);
}
void OpenCmdCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
Private Sub OpenCmdExecuted(ByVal sender As Object, ByVal e As ExecutedRoutedEventArgs)
Dim command, targetobj As String
command = CType(e.Command, RoutedCommand).Name
targetobj = CType(sender, FrameworkElement).Name
MessageBox.Show("The " + command + " command has been invoked on target object " + targetobj)
End Sub
Private Sub OpenCmdCanExecute(ByVal sender As Object, ByVal e As CanExecuteRoutedEventArgs)
e.CanExecute = True
End Sub
Por fim, um CommandBinding é criado na raiz Window do aplicativo que associa os manipuladores de eventos roteados ao comando Open.
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.Open"
Executed="OpenCmdExecuted"
CanExecute="OpenCmdCanExecute"/>
</Window.CommandBindings>
// Creating CommandBinding and attaching an Executed and CanExecute handler
CommandBinding OpenCmdBinding = new CommandBinding(
ApplicationCommands.Open,
OpenCmdExecuted,
OpenCmdCanExecute);
this.CommandBindings.Add(OpenCmdBinding);
' Creating CommandBinding and attaching an Executed and CanExecute handler
Dim OpenCmdBinding As New CommandBinding(ApplicationCommands.Open, AddressOf OpenCmdExecuted, AddressOf OpenCmdCanExecute)
Me.CommandBindings.Add(OpenCmdBinding)
Consulte também
- Visão Geral de Comando
- Conectar um comando a um controle com suporte a comandos
.NET Desktop feedback