Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 防止从特定datagrid文本列复制内容_C#_Wpf_Xaml_Datagrid - Fatal编程技术网

C# 防止从特定datagrid文本列复制内容

C# 防止从特定datagrid文本列复制内容,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,我想防止用户从我的WPF DataGrid中的列复制内容,我已将其定义为DataGridTextColumn 设置ClipboardContentBinding=“{x:Null}”不起作用,对我来说,这是防止复制任何内容的最明显方法 <DataGrid.Columns> <DataGridTextColumn Header=Field" Binding="{Binding Name}"

我想防止用户从我的WPF DataGrid中的列复制内容,我已将其定义为DataGridTextColumn

设置
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;
    }
}