前些日子,公司新需求需要对silverlight的datagrid进行局部任意单元格数据可复制,查阅了半天网络资料愣是没找到相关资料,开始还以为是silverlight的bug根部无法实现,
最后还是实现了。MSDN上也未曾记录这个事件,具体代码如下:
前段xaml文件 需要个datagrid绑定复制事件:
CopyingRowClipboardContent="dataGrid_CopyingRowClipboardContent"
后台代码实现如下:
void dataGrid_CopyingRowClipboardContent(object sender,DataGridRowClipboardEventArgs e) { var temp = e.ClipboardRowContent; var dgData = sender as DataGrid; Int32 i = dgData.CurrentColumn.DisplayIndex; string sColumnValue = ((TextBlock)dgData.Columns[i].GetCellContent(dgData.SelectedItem)).Text.Trim(); temp.Clear(); temp.Insert(0, new DataGridClipboardCellContent(e.Item, dgData.CurrentColumn, sColumnValue)); }
这样就能实现单元格复制了(也就是复制当前鼠标单击所在行所在咧 的单元格值),否则默认赋值是 复制一行 所有列数据。