DataGrid用样式复制到剪贴板

时间:2015-03-21 16:51:25

标签: c# wpf datagrid

我有一个带有一堆DataGridTextColumn列的WPF DataGrid。其中一些具有使用< DataTrigger>的自定义样式设置的CellStyle属性。根据单元格的值设置单元格背景颜色的元素。

似乎选择一行并按Ctrl-C仅将单元格文本复制到剪贴板,而不是颜色。因此,将其粘贴到OneNote等程序会生成一个带有黑色文本的表格,并且不会复制背景颜色。

是否有办法启用样式复制?

感谢。

1 个答案:

答案 0 :(得分:1)

不幸的是,你必须自己写一些东西。

以下是处理DataGrid source的代码的ApplicationCommands.Copy,而第8252行是实现副本的所有格式。

Collection<string> formats = new Collection<string>(new string[] { DataFormats.Html, DataFormats.Text, DataFormats.UnicodeText, DataFormats.CommaSeparatedValue });

从visualstudio立即窗口输出我们可以在DataGrid上看到ApplicationCommands.Copy的结果。

Clipboard.GetDataObject().GetFormats()
[0]: "CSV"
[1]: "Text"
[2]: "UnicodeText"
[3]: "System.String"
[4]: "HTML Format"

其中只有HTML具有任何样式功能,但截至目前,code仅实现它以创建HTML表。

然而,您可以覆盖DataGrid.OnExecutedCopy并以支持自定义样式的格式实现副本。

相关问题