当我在DataGrid中按Ctrl + C时,我希望能够复制一个单元格而不是一行,并且发现可以使用事件CopyingRowClipboardContent和该处理程序来做到这一点:
Private Sub DataGrid_CopyingRowClipboardContent(ByVal sender As Object, ByVal e As DataGridRowClipboardEventArgs)
Dim currentCell = e.ClipboardRowContent(dataGrid.CurrentCell.Column.DisplayIndex)
e.ClipboardRowContent.Clear()
e.ClipboardRowContent.Add(currentCell)
End Sub
我想将此行为全局分配给在运行时创建的任何DataGrid(而不是回到我的代码并将处理程序一个接一个地添加到所有DataGrid)。
我尝试将以下行添加到我的<Window.Resources>
代码中:
<Style x:Key="DataGridCustomStyle" TargetType="{x:Type DataGrid}">
<EventSetter Event="CopyingRowClipboardContent" Handler="Datagrid_CopyingRowClipboardContent" />
</Style>
但是我收到一条错误消息,说CopyingRowClipboardContent必须是RoutedEvent事件。
答案 0 :(得分:0)
评论后,我再次阅读了您的问题,我认为我们找的不是相同的问题...
如果您只想选择一个单元格而不是整个行,那么我认为您可以选择
<Style x:Key="DataGridCustomStyle" TargetType="{x:Type DataGrid}">
<!--Copy only selected content without header-->
<Setter Property="ClipboardCopyMode" Value="ExcludeHeader" />
<!--Able to select many cells-->
<Setter Property="SelectionMode" Value="Extended" />
<!--Able to select cells or entire row/column-->
<Setter Property="SelectionUnit" Value="CellOrRowHeader" />
</Style>
因此,如果用户仅选择了一个单元格并按Ctrl + C,则只有所选单元格内容将粘贴到剪贴板。