Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Následující příklad ukazuje, jak používat příkazy ve Windows Presentation Foundation (WPF). Příklad ukazuje, jak přidružit RoutedCommand k Button, vytvořit CommandBindinga vytvořit obslužné rutiny událostí, které implementují RoutedCommand. Další informace o příkazech najdete v přehledu.
Příklad
První část kódu vytvoří uživatelské rozhraní (UI), které se skládá z Button a a a , a vytvoří, StackPanel který přidruží obslužné rutiny příkazů k CommandBindingRoutedCommand.
Vlastnost Command je přidružena Button k Close příkazu.
Přidá se CommandBinding do CommandBindingCollection kořenového adresáře Window. Obslužné Executed rutiny událostí CanExecute jsou připojeny k této vazbě a přidružené k Close příkazu.
Bez žádné logiky CommandBinding příkazu neexistuje, pouze mechanismus pro vyvolání příkazu. Button Po kliknutí PreviewExecutedRoutedEvent je vyvolán v cíli příkazu následovaný ExecutedRoutedEvent. Tyto události procházejí stromem prvků a hledají CommandBinding konkrétní příkaz. Stojí za zmínku, protože RoutedEvent tunel a bublina přes strom prvků, je třeba věnovat pozornost tam, kde CommandBinding je umístěn. Pokud je na CommandBinding stejné úrovni jako cíl příkazu nebo jiný uzel, který není na trase objektu RoutedEvent, CommandBinding nebude přístupný.
<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);
' Create ui elements.
Dim CloseCmdStackPanel As New StackPanel()
Dim CloseCmdButton As New Button()
CloseCmdStackPanel.Children.Add(CloseCmdButton)
' Set Button's properties.
CloseCmdButton.Content = "Close File"
CloseCmdButton.Command = ApplicationCommands.Close
' Create the CommandBinding.
Dim CloseCommandBinding As New CommandBinding(ApplicationCommands.Close, AddressOf CloseCommandHandler, AddressOf CanExecuteHandler)
' Add the CommandBinding to the root Window.
RootWindow.CommandBindings.Add(CloseCommandBinding)
Další část kódu implementuje obslužné rutiny Executed událostí.CanExecute
Obslužná rutina Executed volá metodu pro zavření otevřeného souboru. Obslužná rutina CanExecute volá metodu k určení, zda je soubor otevřen. Je-li soubor otevřen, CanExecute je nastaven na true; v opačném případě je nastaven na 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;
}
}
' Executed event handler.
Private Sub CloseCommandHandler(ByVal sender As Object, ByVal e As ExecutedRoutedEventArgs)
' Calls a method to close the file and release resources.
CloseFile()
End Sub
' CanExecute event handler.
Private Sub CanExecuteHandler(ByVal sender As Object, ByVal e As CanExecuteRoutedEventArgs)
' Call a method to determine if there is a file open.
' If there is a file open, then set CanExecute to true.
If IsFileOpened() Then
e.CanExecute = True
' if there is not a file open, then set CanExecute to false.
Else
e.CanExecute = False
End If
End Sub
Viz také
.NET Desktop feedback