3

私の WPF アプリケーションでは、すべてのテキスト ボックスの切り取り、コピー、貼り付けを制限したいと考えています。これを行う1つの方法が設定されています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 の記事では、XAML 経由ではなく C# コード経由でメニュー項目を取得することが言及されています。「すべて無視」コマンドを XAML (上記のコード スニペット) に簡単に移植できますが、スペルの提案については、研究開発を行う必要があります。
于 2013-02-07T20:05:28.893 に答える