Nasıl yapılır: RoutedCommand Oluşturma
Bu örnekte, özel bir oluşturma ve bir oluşturarak özel komutun nasıl uygulanarak ve bunları RoutedCommandExecutedRoutedEventHandlerCanExecuteRoutedEventHandler bir'e ekleme ile nasıl gerçekleştirilmeleri CommandBinding gösterir. Komut hakkında daha fazla bilgi için bkz. Komutlara Genel Bakış.
Örnek
oluşturmanın ilk adımı RoutedCommand komutu tanımlamak ve örneği oluşturmakdır.
public static RoutedCommand CustomRoutedCommand = new RoutedCommand();
Public Shared CustomRoutedCommand As New RoutedCommand()
Bir uygulamada komutunu kullanmak için, komutun ne yaptığını tanımlayan olay işleyicileri oluşturulacak
private void ExecutedCustomCommand(object sender,
ExecutedRoutedEventArgs e)
{
MessageBox.Show("Custom Command Executed");
}
Private Sub ExecutedCustomCommand(ByVal sender As Object, ByVal e As ExecutedRoutedEventArgs)
MessageBox.Show("Custom Command Executed")
End Sub
// CanExecuteRoutedEventHandler that only returns true if
// the source is a control.
private void CanExecuteCustomCommand(object sender,
CanExecuteRoutedEventArgs e)
{
Control target = e.Source as Control;
if(target != null)
{
e.CanExecute = true;
}
else
{
e.CanExecute = false;
}
}
' CanExecuteRoutedEventHandler that only returns true if
' the source is a control.
Private Sub CanExecuteCustomCommand(ByVal sender As Object, ByVal e As CanExecuteRoutedEventArgs)
Dim target As Control = TryCast(e.Source, Control)
If target IsNot Nothing Then
e.CanExecute = True
Else
e.CanExecute = False
End If
End Sub
Ardından, CommandBinding komutunu olay işleyicileriyle ilişkilendiren bir oluşturulur. CommandBinding, belirli bir nesne üzerinde oluşturulur. Bu nesne, öğe ağacında CommandBinding öğesinin kapsamını tanımlar
<Window x:Class="SDKSamples.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:custom="clr-namespace:SDKSamples"
Height="600" Width="800"
>
<Window.CommandBindings>
<CommandBinding Command="{x:Static custom:Window1.CustomRoutedCommand}"
Executed="ExecutedCustomCommand"
CanExecute="CanExecuteCustomCommand" />
</Window.CommandBindings>
CommandBinding customCommandBinding = new CommandBinding(
CustomRoutedCommand, ExecutedCustomCommand, CanExecuteCustomCommand);
// attach CommandBinding to root window
this.CommandBindings.Add(customCommandBinding);
Dim customCommandBinding As New CommandBinding(CustomRoutedCommand, AddressOf ExecutedCustomCommand, AddressOf CanExecuteCustomCommand)
' attach CommandBinding to root window
Me.CommandBindings.Add(customCommandBinding)
Son adım komutun iptalidir. Bir komutu çağırmanın bir yolu, komutu gibi bir ICommandSource ile ilişkilendirmektir. Button
<StackPanel>
<Button Command="{x:Static custom:Window1.CustomRoutedCommand}"
Content="CustomRoutedCommand"/>
</StackPanel>
// create the ui
StackPanel CustomCommandStackPanel = new StackPanel();
Button CustomCommandButton = new Button();
CustomCommandStackPanel.Children.Add(CustomCommandButton);
CustomCommandButton.Command = CustomRoutedCommand;
' create the ui
Dim CustomCommandStackPanel As New StackPanel()
Dim CustomCommandButton As New Button()
CustomCommandStackPanel.Children.Add(CustomCommandButton)
CustomCommandButton.Command = CustomRoutedCommand
Düğmeye tıkıldığında özel Execute yöntem RoutedCommand çağrılır. RoutedCommand, ve PreviewExecutedExecuted yönlendiren olayları yükselter. Bu olaylar, bu özel komut için bir arayan CommandBinding öğe ağacında çapraz geçişler sağlar. CommandBindingbulunursa, ile ExecutedRoutedEventHandler ilişkili CommandBinding çağrılır.