C# 防止从特定datagrid文本列复制内容
我想防止用户从我的WPF DataGrid中的列复制内容,我已将其定义为DataGridTextColumn 设置C# 防止从特定datagrid文本列复制内容,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,我想防止用户从我的WPF DataGrid中的列复制内容,我已将其定义为DataGridTextColumn 设置ClipboardContentBinding=“{x:Null}”不起作用,对我来说,这是防止复制任何内容的最明显方法 <DataGrid.Columns> <DataGridTextColumn Header=Field" Binding="{Binding Name}"
ClipboardContentBinding=“{x:Null}”
不起作用,对我来说,这是防止复制任何内容的最明显方法
<DataGrid.Columns>
<DataGridTextColumn Header=Field"
Binding="{Binding Name}"
ClipboardContentBinding="{x:Null}" />
</DataGrid.Columns>
另一种禁用复制的方法是在CommandManager.PreviewExecuted
事件中限制复制命令
XAML
你可以通过以下几点来完成你想要的
包含命名空间xmlns:sys=“clr namespace:System;assembly=mscorlib”
定义空字符串资源:
这可能会有所帮助:@Sach,我使用的不是Windows窗体,而是WPF。这不是确切的答案,这是一个正确的方向。看看这个公认的答案,抑制按键可能对你仍然有效。这会起作用,但会阻止编辑专栏。您可以将列的IsReadOnly
设置为true。如果您需要能够编辑,那么,我认为,您需要使用列的CellStyle
属性提供一个DataTemplate
。然后使用Sach的建议禁用文本框上的某些操作
<DataGridTextColumn Header=Field" Binding="{Binding Name}" >
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="{x:Type TextBox}">
<EventSetter Event="CommandManager.PreviewExecuted" Handler="textBox_PreviewExecuted"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
private void textBox_PreviewExecuted(object sender, ExecutedRoutedEventArgs e)
{
if (e.Command == ApplicationCommands.Copy)
{
e.Handled = true;
}
}