Classe CommandBinding
TOC
Comprimi il sommario
Espandi il sommario

Classe CommandBinding

Aggiornamento: novembre 2007

Associa un oggetto RoutedCommand ai gestori eventi che implementano il comando.

Spazio dei nomi:  System.Windows.Input
Assembly:  PresentationCore (in PresentationCore.dll)
XMLNS per XAML: http://schemas.microsoft.com/winfx/xaml/presentation

public class CommandBinding
public class CommandBinding
public class CommandBinding

Un oggetto CommandBinding associa un comando agli eventi PreviewExecuted/Executed e PreviewCanExecute/CanExecute che implementano e determinano lo stato del comando.

Quando viene chiamato il metodo Execute o CanExecute di un oggetto RoutedCommand, vengono generati gli eventi PreviewExecuted/Executed o PreviewCanExecute/CanExecute in relazione alla destinazione del comando.Se la destinazione del comando dispone di un oggetto CommandBinding per il comando, vengono chiamati i gestori appropriati. Se la destinazione del comando non dispone di un oggetto CommandBinding per il comando, gli eventi vengono indirizzati attraverso la struttura a albero dell'elemento finché viene rilevato un elemento che dispone di un oggetto CommandBinding.

Un oggetto CommandBinding ha un utilizzo limitato con ICommand che non è un oggetto CommandBinding. Ciò perché un oggetto CommandBinding associa il comando a ExecutedRoutedEventHandler e a CanExecuteRoutedEventHandler che rimangono in attesa degli eventi indirizzati Executed e CanExecute generati quando vengono chiamati i metodi Execute e CanExecute dell'oggetto RoutedCommand.

Nell'esempio seguente viene illustrato l'utilizzo dei comandi in Windows Presentation Foundation (WPF). Nell'esempio viene mostrato come associare un oggetto RoutedCommand a uno Button, creare un oggetto CommandBinding e creare i gestori eventi che implementano RoutedCommand. Per ulteriori informazioni sull'esecuzione di comandi, vedere Cenni preliminari sull'esecuzione di comandi.

La prima sezione di codice crea l'interfaccia utente, costituita da un oggetto Button e da un oggetto StackPanel; inoltre crea un oggetto CommandBinding che associa i gestori dei comandi all'oggetto RoutedCommand.

La proprietà Command dell'oggetto Button è associata al comando Close.

L'oggetto CommandBinding viene aggiunto all'oggetto CommandBindingCollection dell'oggetto Window radice. I gestori eventi Executed e CanExecute sono associati a questa associazione e al comando Close.

Senza CommandBinding non è possibile determinare una logica di comando, ma solo un meccanismo per richiamare il comando. Facendo clic su Button viene generato l'evento PreviewExecuted RoutedEvent nella destinazione comando, seguito dall'evento Executed RoutedEvent. Questi eventi attraversano la struttura ad albero dell'elemento alla ricerca di un oggetto CommandBinding per quel determinato comando. È necessario prestare attenzione alla posizione in cui viene inserito CommandBinding, dal momento che RoutedEvent esegue il tunneling e il bubbling attraverso la struttura ad albero dell'elemento. Se l'oggetto CommandBinding si trova in un elemento di pari livello della destinazione comando o in un altro nodo che non appartiene alla route dell'oggetto RoutedEvent, non sarà possibile accedere all'oggetto 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);


La successiva sezione di codice implementa i gestori eventi Executed e CanExecute.

Il gestore Executed chiama un metodo per chiudere il file aperto. Il gestore CanExecute chiama un metodo per determinare se un file è aperto. Se un file risulta aperto, la proprietà CanExecute è impostata su true; in caso contrario, sarà impostata su 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;
    }
}


System.Object
  System.Windows.Input.CommandBinding

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Windows Vista

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0

Aggiunte alla community

AGGIUNGI
Mostra:
© 2016 Microsoft