WPF DataGrid,Ctrl + C后复制到剪贴板,OnCopyingRowClipboardContent

时间:2012-12-14 10:30:17

标签: wpf xaml datagrid clipboard

对于WPF,数据网格我试图在Ctrl+C之后将自定义文本数据复制到剪贴板 不同的尝试使用覆盖 OnCopyingRowClipboardContent(DataGridRowClipboardEventArgs args)CopingRowClipboardContent event,没有帮助。

剪贴板变为空或标准行文本,但不是我想放在那里。 例如

protected override void OnCopyingRowClipboardContent(DataGridRowClipboardEventArgs args)
{
    Clipboard.SetText("Abc-hello");
    bool b1 = Clipboard.ContainsText();
    string s1 = Clipboard.GetText();
}

s1获取所需的文本,但在退出此方法后,剪贴板变空。 知道是否可以解决这个问题?

2 个答案:

答案 0 :(得分:15)

正确的方法是在XAML网格上添加此属性

ClipboardCopyMode="ExcludeHeader"

并为您要复制的每个属性添加此XAML

 <DataGridTemplateColumn  ClipboardContentBinding="{Binding XXXXXX} ..... 

其他兼性步骤是实现dataGrid事件CopyingRowClipboardContent来修改clipoard数据

答案 1 :(得分:4)

您需要设置DataGridRowClipboardEventArgs的ClipboardRowContent属性

static void dataGrid_CopyingRowClipboardContent(object sender, DataGridRowClipboardEventArgs e)
{
    e.ClipboardRowContent.Clear();
    e.ClipboardRowContent.Add(new DataGridClipboardCellContent(e.Item, (sender as DataGrid).Columns[0], "Abc-hello"));
}