zoukankan      html  css  js  c++  java
  • 【原创】有关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了。

  • 相关阅读:
    React.render和reactDom.render的区别
    CSS中position的4种定位详解
    React.js入门必须知道的那些事
    JS处理事件小技巧
    React.js深入学习详细解析
    React.js实现原生js拖拽效果及思考
    Linux ./configure && make && make install 编译安装和卸载
    Redis set集合结构及命令详解
    Redis数据过期策略
    Redis TTL命令
  • 原文地址:https://www.cnblogs.com/x-poior/p/4916708.html
Copyright © 2011-2022 走看看