Reputation: 170
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?
Upvotes: 15
Views: 18530
Reputation: 13910
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
Upvotes: 17
Reputation: 2623
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"));
}
Upvotes: 3