RoutedCommand.Execute(Object, IInputElement) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
对当前命令目标执行 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
要在其中查找命令处理程序的元素。
- 属性
例外
target
不是 UIElement 或 ContentElement。
示例
以下示例来自示例的 ICommandSource 自定义实现。
this.Command
在此示例中,是 上的 ICommandSourceCommand 属性。 如果命令不为 null,则命令将强制转换为 RoutedCommand。 如果是 , RoutedCommand则 Execute 调用 方法传递 CommandTarget 和 CommandParameter。 如果命令不是 , RoutedCommand则将其强制转换为 , ICommand 并 Execute 调用 方法传递 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 的实际逻辑不包含在 方法中 Execute 。 Execute 引发 PreviewExecuted 和 Executed 事件,该事件通过元素树通过隧道和气泡来查找具有 CommandBinding的对象。 CommandBinding如果找到 的 RoutedCommand ,则ExecutedRoutedEventHandler调用 附加到CommandBinding的 。 这些处理程序提供执行 的 RoutedCommand编程逻辑。
和 PreviewExecutedExecuted 事件在 上 CommandTarget引发。 CommandTarget如果未在 上ICommandSource设置 ,PreviewExecuted则使用键盘焦点在 元素上引发 和 Executed 事件。