【发布时间】:2015-05-24 23:21:12
【问题描述】:
我有一个带有一堆 DataGridTextColumn 列的 WPF DataGrid。其中一些设置了带有自定义样式的 CellStyle 属性,该样式带有
似乎选择一行并按 Ctrl-C 只会将单元格文本复制到剪贴板,而不是颜色。因此,将其粘贴到 OneNote 等程序会生成一个带有黑色文本的表格,并且不会复制背景颜色。
有没有办法也可以复制样式?
谢谢。
【问题讨论】:
我有一个带有一堆 DataGridTextColumn 列的 WPF DataGrid。其中一些设置了带有自定义样式的 CellStyle 属性,该样式带有
似乎选择一行并按 Ctrl-C 只会将单元格文本复制到剪贴板,而不是颜色。因此,将其粘贴到 OneNote 等程序会生成一个带有黑色文本的表格,并且不会复制背景颜色。
有没有办法也可以复制样式?
谢谢。
【问题讨论】:
不幸的是,您必须自己写一些东西。
这是处理 DataGrid 的 ApplicationCommands.Copy 的代码的 source,第 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 并以支持自己样式的格式实现复制。
【讨论】: