Compartilhar via


Como: Ativar um comando

O seguinte exemplo mostra como usar comando em Windows Presentation Foundation (WPF). O exemplo mostra como associar um RoutedCommand a um Button, criar um CommandBinding, e criar manipuladores de eventos que implementam o RoutedCommand. Para obter mais informações sobre comandos, consulte Visão geral de Comando.

Exemplo

A primeira seção de código cria um interface do usuário (UI), que consiste de um Button e um StackPanel, e cria um CommandBinding que associa o manipulador de comandos com o RoutedCommand.

A propriedade Command do Button é associada ao comando Close.

O CommandBinding é adicionado ao CommandBindingCollection da Window raiz. Os manipuladores de evento Executed e CanExecute são anexados a essa associação e associados ao comando Close.

Sem o CommandBinding não há lógica de comando, somente um mecanismo para invocar o comando. Quando o Button é clicado, o RoutedEvent PreviewExecuted é levantado no comando alvo seguido do RoutedEvent Executed. Esses eventos atravessam a árvore de elementos procurando por um CommandBinding daquele comando em particular. Vale notar que como o RoutedEvent corre e percorre ao longo da árvore de elementos, cuidado deve ser tomado onde o CommandBinding é colocado. Se o CommandBinding está em um irmão do comando alvo ou outro nó que não está na rota do RoutedEvent, o CommandBinding não será acessado.

<Window x:Class="WCSamples.Window1"
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
    Title="CloseCommand"
    Name="RootWindow"
    >
  <Window.CommandBindings>
    <CommandBinding Command="ApplicationCommands.Close"
                    Executed="CloseCommandHandler"
                    CanExecute="CanExecuteHandler"
                    />
  </Window.CommandBindings>
  <StackPanel Name="MainStackPanel">
    <Button Command="ApplicationCommands.Close" 
            Content="Close File" />
  </StackPanel>
</Window>
// Create ui elements.
StackPanel CloseCmdStackPanel = new StackPanel();
Button CloseCmdButton = new Button();
CloseCmdStackPanel.Children.Add(CloseCmdButton);

// Set Button's properties.
CloseCmdButton.Content = "Close File";
CloseCmdButton.Command = ApplicationCommands.Close;

// Create the CommandBinding.
CommandBinding CloseCommandBinding = new CommandBinding(
    ApplicationCommands.Close, CloseCommandHandler, CanExecuteHandler);

// Add the CommandBinding to the root Window.
RootWindow.CommandBindings.Add(CloseCommandBinding);

A próxima seção de código implementa os manipuladores de evento Executed e CanExecute.

O manipulador Executed chama um método para fechar o arquivo aberto. O manipulador CanExecute chama um método para determinar se um arquivo está aberto. Se um arquivo está aberto, CanExecute é definido como true; caso contrário, é definido como false.

// Executed event handler.
private void CloseCommandHandler(object sender, ExecutedRoutedEventArgs e)
{
    // Calls a method to close the file and release resources.
    CloseFile();
}

// CanExecute event handler.
private void CanExecuteHandler(object sender, CanExecuteRoutedEventArgs e)
{
    // Call a method to determine if there is a file open.
    // If there is a file open, then set CanExecute to true.
    if (IsFileOpened())
    {
        e.CanExecute = true;
    }
    // if there is not a file open, then set CanExecute to false.
    else
    {
        e.CanExecute = false;
    }
}

Consulte também

Conceitos

Visão geral de Comando