3

在我的 WPF 应用程序中,我想限制所有文本框的剪切、复制和粘贴。一种方法是设置ContextMenu ="{x:Null}"

但是通过这样做,我会丢失我不想丢失的拼写检查建议。此外,在我的应用程序中,我有 1000 个文本框,所以我想以更优化的方式进行操作。

任何建议将被认真考虑。

4

1 回答 1

1

如果您只需要与拼写检查相关的菜单项,您可以参考这篇 MSDN 文章:
如何:使用上下文菜单进行拼写检查

如果要将自定义 ContextMenu 应用于多个(但不是全部)文本框:

  <Window.Resources>
    <ContextMenu x:Key="MyCustomContextMenu">
      <MenuItem Header="Ignore All" Command="EditingCommands.IgnoreSpellingError" />
    </ContextMenu>
  </Window.Resources>
  <Grid>
    <TextBox Height="23" Name="textBox1" Width="120" SpellCheck.IsEnabled="True"
      ContextMenu="{StaticResource MyCustomContextMenu}" />
  </Grid>

如果要将自定义 ContextMenu 应用于所有文本框:

  <Window.Resources>
    <Style TargetType="{x:Type TextBox}">
      <Setter Property="ContextMenu">
        <Setter.Value>
          <ContextMenu>
            <MenuItem
              Header="Ignore All"
              Command="EditingCommands.IgnoreSpellingError" />
          </ContextMenu>
        </Setter.Value>
      </Setter>
    </Style>
  </Window.Resources>
  <Grid>
    <TextBox Height="23" Name="textBox1" Width="120" SpellCheck.IsEnabled="True"  />
  </Grid>


笔记:

  1. 您可以将上下文菜单资源移动到应用程序级别而不是窗口级别。
  2. MSDN 文章提到通过 C# 代码而不是通过 XAML 获取菜单项。我可以轻松地将“Ignore All”命令移植到 XAML(上面的代码片段),但对于拼写建议,您必须进行一些研发。
于 2013-02-07T20:05:28.893 回答