RoutedCommand.Execute(Object, IInputElement) 方法

定义

对当前命令目标执行 RoutedCommand

public:
 void Execute(System::Object ^ parameter, System::Windows::IInputElement ^ target);
[System.Security.SecurityCritical]
public void Execute (object parameter, System.Windows.IInputElement target);
public void Execute (object parameter, System.Windows.IInputElement target);
[<System.Security.SecurityCritical>]
member this.Execute : obj * System.Windows.IInputElement -> unit
member this.Execute : obj * System.Windows.IInputElement -> unit
Public Sub Execute (parameter As Object, target As IInputElement)

参数

parameter
Object

要传递到处理程序的用户定义的参数。

target
IInputElement

要在其中查找命令处理程序的元素。

属性

例外

示例

以下示例来自示例的 ICommandSource 自定义实现。

this.Command 在此示例中,是 上的 ICommandSourceCommand 属性。 如果命令不为 null,则命令将强制转换为 RoutedCommand。 如果是 , RoutedCommandExecute 调用 方法传递 CommandTargetCommandParameter。 如果命令不是 , RoutedCommand则将其强制转换为 , ICommandExecute 调用 方法传递 CommandParameter

// If Command is defined, moving the slider will invoke the command;
// Otherwise, the slider will behave normally.
protected override void OnValueChanged(double oldValue, double newValue)
{
    base.OnValueChanged(oldValue, newValue);

    if (this.Command != null)
    {
        RoutedCommand command = Command as RoutedCommand;

        if (command != null)
        {
            command.Execute(CommandParameter, CommandTarget);
        }
        else
        {
            ((ICommand)Command).Execute(CommandParameter);
        }
    }
}
' If Command is defined, moving the slider will invoke the command;
' Otherwise, the slider will behave normally.
Protected Overrides Sub OnValueChanged(ByVal oldValue As Double, ByVal newValue As Double)
    MyBase.OnValueChanged(oldValue, newValue)

    If Me.Command IsNot Nothing Then
        Dim command As RoutedCommand = TryCast(Me.Command, RoutedCommand)

        If command IsNot Nothing Then
            command.Execute(CommandParameter, CommandTarget)
        Else
            CType(Me.Command, ICommand).Execute(CommandParameter)
        End If
    End If
End Sub

注解

执行 RoutedCommand 的实际逻辑不包含在 方法中 ExecuteExecute 引发 PreviewExecutedExecuted 事件,该事件通过元素树通过隧道和气泡来查找具有 CommandBinding的对象。 CommandBinding如果找到 的 RoutedCommand ,则ExecutedRoutedEventHandler调用 附加到CommandBinding的 。 这些处理程序提供执行 的 RoutedCommand编程逻辑。

PreviewExecutedExecuted 事件在 上 CommandTarget引发。 CommandTarget如果未在 上ICommandSource设置 ,PreviewExecuted则使用键盘焦点在 元素上引发 和 Executed 事件。

适用于