公司项目用的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了。