Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I följande exempel visas hur du använder kommandon i Windows Presentation Foundation (WPF). Exemplet visar hur du associerar en RoutedCommand till en Button, skapar en CommandBindingoch skapar de händelsehanterare som implementerar RoutedCommand. Mer information om kommandon finns i -kommandoöversikten.
Exempel
Det första kodavsnittet skapar användargränssnittet (UI), som består av en Button och en StackPanel, och skapar en CommandBinding som associerar kommandohanterarna med RoutedCommand.
Egenskapen Command för Button är associerad med kommandot Close.
CommandBinding läggs till i CommandBindingCollection för roten Window. Händelsehanterarna Executed och CanExecute är kopplade till den här bindningen och associeras med kommandot Close.
Utan CommandBinding finns det ingen kommandologik, bara en mekanism för att anropa kommandot. När Button klickas på aktiveras PreviewExecutedRoutedEvent på kommandots mål följt av ExecutedRoutedEvent. Dessa händelser passerar elementträdet och letar efter en CommandBinding för just det kommandot. Det är värt att notera att eftersom RoutedEvent propagerar genom elementträdet måste man vara försiktig med var CommandBinding placeras. Om CommandBinding finns på samma nivå som kommandomålet eller en annan nod som inte finns på vägen för RoutedEventkommer CommandBinding inte att nås.
<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)
Nästa kodavsnitt implementerar händelsehanterarna Executed och CanExecute.
Hanteraren Executed anropar en metod för att stänga den öppna filen. Hanteraren för CanExecute anropar en metod för att avgöra om en fil är öppen. Om en fil är öppen är CanExecute inställd på true; annars är den inställd på 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
Se även
.NET Desktop feedback