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

Ale*_*x N 14 wpf clipboard xaml datagrid

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

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

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

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

dan*_*004 17

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

ClipboardCopyMode="ExcludeHeader"
Run Code Online (Sandbox Code Playgroud)

并且对于您想要复制的每个属性,添加此XAML

 <DataGridTemplateColumn  ClipboardContentBinding="{Binding XXXXXX} ..... 
Run Code Online (Sandbox Code Playgroud)

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


Dte*_*tex 3

您需要设置 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"));
}
Run Code Online (Sandbox Code Playgroud)