1. 程式人生 > >wpf 事件引數 繫結到viewmdoel

wpf 事件引數 繫結到viewmdoel

public sealed class EventCommand : TriggerAction<DependencyObject>
    {

        public static readonly DependencyProperty CommandParameterProperty =
            DependencyProperty.Register("CommandParameter", typeof(object), typeof(EventCommand), null);


        public static readonly DependencyProperty CommandProperty = DependencyProperty.Register(
            
"Command", typeof(ICommand), typeof(EventCommand), null); public static readonly DependencyProperty InvokeParameterProperty = DependencyProperty.Register( "InvokeParameter", typeof(object), typeof(EventCommand), null); private string commandName; public object
InvokeParameter { get { return this.GetValue(InvokeParameterProperty); } set { this.SetValue(InvokeParameterProperty, value); } } public ICommand Command {
get { return (ICommand)this.GetValue(CommandProperty); } set { this.SetValue(CommandProperty, value); } } public string CommandName { get { return this.commandName; } set { if (this.CommandName != value) { this.commandName = value; } } } public object CommandParameter { get { return this.GetValue(CommandParameterProperty); } set { this.SetValue(CommandParameterProperty, value); } } public object Sender { get; set; } protected override void Invoke(object parameter) { this.InvokeParameter = parameter; if (this.AssociatedObject != null) { ICommand command = this.Command; if ((command != null) && command.CanExecute(this.CommandParameter)) { command.Execute(this.CommandParameter); } } } }
<i:Interaction.Triggers>
    <i:EventTrigger EventName="Drop">
        <cmds:EventCommand CommandName="DropCommand" 
        CommandParameter="{Binding RelativeSource={RelativeSource Self},         Path=InvokeParameter}"/>
    </i:EventTrigger>
</i:Interaction.Triggers>