【问题标题】:DataGrid copy to clipboard with styleDataGrid 使用样式复制到剪贴板
【发布时间】:2015-05-24 23:21:12
【问题描述】:

我有一个带有一堆 DataGridTextColumn 列的 WPF DataGrid。其中一些设置了带有自定义样式的 CellStyle 属性,该样式带有 元素,这些元素根据它们的值设置单元格的背景颜色。

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

有没有办法也可以复制样式?

谢谢。

【问题讨论】:

    标签: c# wpf datagrid


    【解决方案1】:

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

    这是处理 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 并以支持自己样式的格式实现复制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多