Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu örnekte özel bir RoutedCommand oluşturma ve ExecutedRoutedEventHandler ve CanExecuteRoutedEventHandler oluşturup bunları bir CommandBindingekleyerek özel komutun nasıl uygulanacağı gösterilmektedir. Komut oluşturma hakkında daha fazla bilgi için bkz. Komuta Genel Bakış.
Örnek
RoutedCommand oluşturmanın ilk adımı, komutu tanımlamak ve örneği oluşturmaktır.
public static RoutedCommand CustomRoutedCommand = new RoutedCommand();
Public Shared CustomRoutedCommand As New RoutedCommand()
Komutu bir uygulamada kullanmak için, komutun ne yaptığını tanımlayan olay işleyicilerinin oluşturulması gerekir
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, komutu olay işleyicileriyle ilişkilendiren bir CommandBinding oluşturulur. CommandBinding belirli bir nesne üzerinde oluşturulur. Bu nesne, öğe ağacındaki CommandBinding 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 komutu çağırmaktır. Bir komutu çalıştırmanın bir yolu, onu bir ICommandSourceile, mesela bir Buttonile ilişkilendirmektir.
<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ıklandığında, özel Execute yöntemi RoutedCommand üzerinde çağrılır. RoutedCommand, PreviewExecuted ve Executed yönlendirilen olaylarını yükseltir. Bu olaylar, bu özel komut için CommandBinding aramak üzere öğe ağacında gezinir. Bir CommandBinding bulunursa, ExecutedRoutedEventHandler ile ilişkili CommandBinding çağrılır.
Ayrıca bakınız
.NET Desktop feedback