如何在所有WPF表单中禁用剪切,复制粘贴和右键单击

时间:2017-05-31 13:24:53

标签: wpf keyboard-shortcuts

我们正在构建WPF自助服务终端应用程序。 我们需要禁用CUT COPY PASTE和RIGHT-CLICKs

请问这怎么办?

这篇SO帖子没有为所有表格提供集中解决方案:

How to suppress Cut, Copy and Paste Operations in TextBox in WPF?

1 个答案:

答案 0 :(得分:1)

您需要在您定义的Style中添加App.xaml

<Style TargetType="TextBox"> 
<!-- OR -->
<Style TargetType="{x:Type TextBox}">
    <Setter Property="ContextMenu" Value="{x:Null}"/>
</Style>  

但这仅适用于DataTemplate以内的物品 的更新:
App.xaml

<Application x:Class="TestApp.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:TestApp"
         StartupUri="MainWindow.xaml">
<Application.Resources>
    <Style TargetType="{x:Type TextBox}">
        <Setter Property="ContextMenu" Value="{x:Null}"/>
    </Style>
</Application.Resources>


这是MainWindow.xaml

<Window x:Class="TestApp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xml:lang="en-GB"
    xmlns:local="clr-namespace:TestApp"
    xmlns:converter="clr-namespace:TestApp.Converters"
    mc:Ignorable="d"
    Height="478.889" Width="903.889">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0.3*"/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <StackPanel>
        <TextBox Name="txtBx" MinHeight="150" 
                 VerticalAlignment="Top" AutoWordSelection="True" 
                 MaxLines="10" 
                 TextWrapping="WrapWithOverflow" 
                 SelectionChanged="txtBx_TextHighlighted"
                 ToolTip="{x:Null}"
                 Margin="10"/>

    </StackPanel>
</Grid>


如果您右键单击TextBox,您将无法使用任何ContextMenu 更新2:
继续我们的聊天,TextBox引用了其他样式,这些样式覆盖了我们在App.xaml中设置的任何内容。外部样式是在App.xaml之后加载的。