Exportar (0) Imprimir
Expandir todo

Cómo: Habilitar un comando

Actualización: noviembre 2007

En el siguiente ejemplo se muestra cómo utilizar comandos en Windows Presentation Foundation (WPF). En el ejemplo se muestra cómo asociar un comando RoutedCommand a un control Button, crear un objeto CommandBindingy crear los controladores de eventos que implementan RoutedCommand. Para obtener más información sobre los comandos, vea Información general sobre comandos.

En la primera sección de código se crea la interfaz de usuario (UI), que está compuesta de un control Button y un control StackPanel, y se crea también un objeto CommandBinding que asocia los controladores de comando a un comando RoutedCommand.

La propiedad Command de Button se asocia al comando Close.

El objeto CommandBinding se agrega al objeto CommandBindingCollection del objeto Window raíz. Los controladores de eventos Executed y CanExecute se asocian a este enlace y al comando Close.

Sin CommandBinding no hay ninguna lógica de comando, únicamente un mecanismo para invocar el comando. Cuando se hace clic en Button, se provoca el evento PreviewExecuted asociado al comando RoutedEvent en el destino del comando, seguido por el evento Executed asociado al comando RoutedEvent. Estos eventos recorren el árbol de elementos en busca de un enlace CommandBinding para ese comando concreto. Cabe destacar que, debido a que RoutedEvent tuneliza y traspasa el árbol de elementos, se deben extremar las precauciones al elegir el lugar donde se coloca CommandBinding. Si CommandBinding está en un nodo relacionado con el destino del comando o en otro nodo que no está en la ruta de RoutedEvent, no se tendrá acceso a CommandBinding.

<Window x:Class="WCSamples.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://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);


En la sección de código siguiente se implementan los controladores de eventos Executed y CanExecute.

El controlador Executed llama a un método para cerrar el archivo abierto. El controlador CanExecute llama a un método para determinar si un archivo está abierto. Si hay un archivo abierto, la propiedad CanExecute se establece en true; de lo contrario, se establece en 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;
    }
}


Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft