WPF数据表格,在Ctrl+C之后复制到剪贴板,OnCopyingRowClipboardContent

15

对于 WPF 的 Data Grid,我正在尝试在按下 Ctrl+C 后将我的自定义文本数据复制到剪贴板。尝试使用重写 OnCopyingRowClipboardContent(DataGridRowClipboardEventArgs args)CopingRowClipboardContent 事件,但都没有起作用。

无论是剪贴板为空还是标准行文本,都不是我想放在那里的内容。例如:

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

s1 获得了所需的文本,但在离开该方法后,剪贴板变为空。有没有什么办法可以解决这个问题?

s1 得到所需文本,但该方法执行后剪贴板变为空。有解决方法吗?

2个回答

17

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

ClipboardCopyMode="ExcludeHeader"

对于每个要复制的属性,添加以下XAML代码:

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

其他可选步骤是实现dataGrid事件CopyingRowClipboardContent来修改剪贴板数据


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"));
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接