WPF DataGrid, Copy to Clipboard after Ctrl+C,OnCop

2019-04-04 17:13发布

For WPF, Data Grid I am trying to copy to clipboard my custom text data, after Ctrl+C Diverse attempts to use override OnCopyingRowClipboardContent(DataGridRowClipboardEventArgs args) or CopingRowClipboardContent event, don't help.

Either clipboard gets empty or standard row text, but not what I would like to put there. For instance

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

s1 gets desired text, but after going out of this method clipboard gets empty. Any idea if one can solve this?

2条回答
兄弟一词,经得起流年.
2楼-- · 2019-04-04 17:24

the correct way is add on XAML grid this property

ClipboardCopyMode="ExcludeHeader"

and for each property you want copy add this XAML

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

other facultative step is implement the dataGrid event CopyingRowClipboardContent to modify the clipoard data

查看更多
3楼-- · 2019-04-04 17:40

You need to set the ClipboardRowContent property of DataGridRowClipboardEventArgs

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"));
}
查看更多
登录 后发表回答