【原创】有关Silverlight DataGrid双击事件的分析 完整分析 代码与示例

公司项目用的silverlight,而且silverlight一些技术 资料比较少。所以分享出来 给大家参考参考。

有关Silverlight中DataGrid 双击事件 的代码 如下:

 

1. 前台xaml文件,需要对datagrid的属性上加上 事件绑定

“MouseLeftButtonUp="dataGrid_MouseLeftButtonUp” 
 <sdk:DataGrid Grid.Row="1" Name="dataGrid1" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" ItemsSource="{Binding SearchResult}"
                          MouseLeftButtonUp="dataGrid_MouseLeftButtonUp" CopyingRowClipboardContent="dataGrid1_CopyingRowClipboardContent">
                <sdk:DataGrid.Columns>
                    <sdk:DataGridTextColumn Header="咨询编号" Binding="{Binding Code}"/> 
                </sdk:DataGrid.Columns>
</sdk:DataGrid>

 

2.后台xaml.cs文件,需要 预先定义 几个变量,用于记录 前后单击时间 等。

  DateTime lastClickTime = DateTime.Now;
        object lastClickItem;
        public delegate void DataItemEventHandler(object sender, DataItemDoubleClickArgs fe);
        public event DataItemEventHandler DataItemDoubleClick;

 

3.后台xaml.cs文件,书写 对应事件。

 

 /// <summary>
        /// 模拟鼠标双击DataGridItem效果
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void dataGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            var eventSource = e.OriginalSource;
            var now = DateTime.Now;
            var ts = now.Subtract(lastClickTime);
            var diff = ts.TotalMilliseconds;
            lastClickTime = now;
            //若两次双击时差小于250ms且点击的是同一项目则激发事件
            var nowClickItem = dataGrid1.SelectedItem;
            if (diff < 250 && lastClickItem == nowClickItem)
            {
                //抛出datagrid双击事件
                OnDataItemDoubleClick(nowClickItem,
                    new DataItemDoubleClickArgs(eventSource));
            }
            lastClickItem = nowClickItem;
        }
        //模拟双击
        protected virtual void OnDataItemDoubleClick(object sender, DataItemDoubleClickArgs e)
        {
            if (DataItemDoubleClick != null)
                DataItemDoubleClick(sender, e);
        }

 

4.完毕,调试出效果就ok了。

转载于:https://www.cnblogs.com/x-poior/p/4916708.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值