XAML MVVM DoubleClick

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Interactivity;
using System.Windows.Threading;


namespace Moonn.Trading.DataSource.Models
{
    public class MouseDoubleClick
    {
       public static DependencyProperty CommandProperty =
       DependencyProperty.RegisterAttached("Command",
       typeof(ICommand),
       typeof(MouseDoubleClick),
       new UIPropertyMetadata(CommandChanged));


        public static DependencyProperty CommandParameterProperty =
            DependencyProperty.RegisterAttached("CommandParameter",
                                                typeof(object),
                                                typeof(MouseDoubleClick),
                                                new UIPropertyMetadata(null));


        public static void SetCommand(DependencyObject target, ICommand value)
        {
            target.SetValue(CommandProperty, value);
        }


        public static void SetCommandParameter(DependencyObject target, object value)
        {
            target.SetValue(CommandParameterProperty, value);
        }
        public static object GetCommandParameter(DependencyObject target)
        {
            return target.GetValue(CommandParameterProperty);
        }
        private static void CommandChanged(DependencyObject target, DependencyPropertyChangedEventArgs e)
        {
            Control control = target as Control;
            if (control != null)
            {
                if ((e.NewValue != null) && (e.OldValue == null))
                {
                    control.MouseDoubleClick += OnMouseDoubleClick;
                }
                else if ((e.NewValue == null) && (e.OldValue != null))
                {
                    control.MouseDoubleClick -= OnMouseDoubleClick;
                }
            }
        }
        private static void OnMouseDoubleClick(object sender, RoutedEventArgs e)
        {
            Control control = sender as Control;
            ICommand command = (ICommand)control.GetValue(CommandProperty);
            object commandParameter = control.GetValue(CommandParameterProperty);
            command.Execute(commandParameter);
        }
    }

}

You can use Attached Properties to bind any event you want.

  xmlns:ds="clr-namespace:Moonn.Trading.DataSource.Models"


<ListBox ItemsSource="{Binding datas, Mode=TwoWay}"
                         SelectedItem="{Binding price, Mode=TwoWay}"
                         ds:MouseDoubleClick.Command="{Binding Edit}"
                    >
   

<ListBox ItemsSource="{Binding datas, Mode=TwoWay}"
                         SelectedItem="{Binding price, Mode=TwoWay}"
                         ds:MouseDoubleClick.Command="{Binding Edit}"
                         ds:MouseDoubleClick.CommandParameter="{Binding Edit}"
                    >

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值