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数据
您需要设置 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)