Esporta (0) Stampa
Espandi tutto

Classe ApplicationCommands

Aggiornamento: novembre 2007

Fornisce un insieme standard di comandi relativi alle applicazioni.

Spazio dei nomi:  System.Windows.Input
Assembly:  PresentationCore (in PresentationCore.dll)

public static class ApplicationCommands
public final class ApplicationCommands
public final class ApplicationCommands
Impossibile creare direttamente un'istanza di questa classe in XAML.

I comandi nella classe ApplicationCommands e i comandi nelle altre classi della libreria di comando, come ad esempio ComponentCommands e NavigationCommands, devono rappresentare un insieme di comandi comuni che i programmatori dell'applicazione incontrano frequentemente. I comandi rappresentano solo l'istanza dell'oggetto RoutedCommand e non l'implementazione logica per il comando. L'implementazione logica viene associata al comando tramite l'oggetto CommandBinding. Ad esempio, se il comando Close viene eseguito su un controllo, la logica che esegue il comando Close può non essere fornita dal comando; pertanto, il writer dell'applicazione è responsabile della scrittura della logica che determina come il controllo gestirà il comando.

Tuttavia, molti controlli forniscono l'implementazione logica per tanti comandi presenti nella libreria del comando. Ad esempio, la classe TextBox fornisce la logica per i comandi Paste, Cut, Copy, Undo e Redo.

Per ulteriori informazioni sui comandi e il loro utilizzo, vedere Cenni preliminari sull'esecuzione di comandi.

Nell'esempio seguente viene mostrato come associare RoutedCommand a Control che dispone del supporto incorporato per il comando. Per un esempio completo in cui i comandi vengono associati a più origini, vedere l'esempio Esempio di creazione di un RoutedCommand personalizzato.

In Windows Presentation Foundation (WPF) viene fornita una libreria dei comandi comuni rilevata regolarmente dai programmatori di applicazioni. La libreria dei comandi include le classi seguenti: ApplicationCommands, ComponentCommands, NavigationCommands, MediaCommands e EditingCommands.

Gli oggetti RoutedCommand statici che compongono queste classi non forniscono la logica di comando. Quest'ultima viene associata al comando con CommandBinding. Alcuni controlli dispongono dell'oggetto CommandBindings incorporato per alcuni comandi. Questo meccanismo consente alla semantica di un comando di rimanere uguale, mentre l'implementazione effettiva può essere modificata. TextBox, ad esempio, gestisce il comando Paste in modo diverso rispetto a un controllo progettato per supportare immagini, tuttavia l'idea di base dell'operazione Incolla rimane la stessa. La logica di comando non può essere fornita dal comando, ma piuttosto dal controllo o dall'applicazione.

Tuttavia, molti controlli di WPF dispongono del supporto incorporato di alcuni dei comandi della relativa libreria. TextBox, ad esempio, supporta molti dei comandi di modifica dell'applicazione, quali Paste, Copy, Cut, Redo e Undo. Lo sviluppatore di applicazioni non deve eseguire nessuna alcuna particolare affinché questi comandi funzionino con tali controlli. Se TextBox è la destinazione comando quando il comando viene eseguito, gestirà il comando utilizzando l'oggetto CommandBinding incorporato nel controllo.

Di seguito viene mostrato come utilizzare MenuItem come origine comando per il comando Paste in cui TextBox è la destinazione del comando. Tutta la logica che definisce il modo in cui l'oggetto TextBox esegue l'operazione di Incolla è incorporata nel controllo TextBox.

Viene creato un oggetto MenuItem e la relativa proprietà Command viene impostata sul comando Paste. L'oggetto CommandTarget non viene impostato in modo esplicito sull'oggetto TextBox. Quando l'oggetto CommandTarget non viene impostato, la destinazione del comando è l'elemento con lo stato attivo. Se l'elemento con lo stato attivo non supporta il comando Paste o non può attualmente eseguire il comando Incolla (ad esempio, gli Appunti sono vuoti), l'oggetto MenuItem viene visualizzato in grigio.

<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);
}


Altro codice

Procedura: associare un comando a un controllo senza supporto del comandoNell'esempio seguente viene mostrato come associare un oggetto RoutedCommand a un oggetto Control che non dispone di un supporto incorporato per il comando. Per un esempio completo in cui i comandi vengono associati a più origini, vedere l'esempio Esempio di creazione di un RoutedCommand personalizzato.

System.Object
  System.Windows.Input.ApplicationCommands

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:
© 2014 Microsoft