你的位置:首页 > ASP.net教程

[ASP.net教程]【原创】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了。