我正在使用WPF DataGrid
显示名称-值对。 SelectionUnit
设置为FullRow
是因为它看起来不错,但是,当用户选择一行并按Ctrl + C时,他确实要复制值文本,而不是复制名称和值的默认行为。当寻找解决方案时,我发现了CopyingRowClipboardContent
事件,但是the MSDN page没有有关如何使用它的信息。还是我应该自己捕获PreviewKeyDown
?
最佳答案
您可以使用CopyingRowClipboardContent
在DataGridRowClipboardEventArgs
事件处理程序中修改复制的数据。
反编译的源代码
public class DataGridRowClipboardEventArgs
{
/// <summary>
/// This list should be used to modify, add or remove a cell
/// content before it gets stored into the clipboard.
/// </summary>
public List<DataGridClipboardCellContent> ClipboardRowContent
{
...
因此,例如,如果您有两列,而只想要第一列,则可以像这样删除第二列:
private void grid_CopyingRowClipboardContent(
object sender, DataGridRowClipboardEventArgs e)
{
e.ClipboardRowContent.RemoveAt(1);
}