0

バックグラウンド:

標準の WPF アプリケーションでは、TextBox を右クリックすると、[切り取り]、[コピー]、[貼り付け] の 3 つのコマンドを含む ContextMenu が表示されます。アプリケーションのすべての TextBox ContextMenus に Select All コマンドを追加したいと考えています。

問題:

私の標準的なアプローチは、TextBox を対象とし、新しい ContextMenu を提供する Style を作成することです。そうすれば、すべての TextBox コントロールがスタイルを継承し、変更を反映します。

問題は、私のスタイルが TextBox を含むコントロールに継承されないことです。たとえば、DataGridTextColumn セルを編集するときに、TextBox が使用されていることはわかっていますが、スタイルが継承されません。私のアプリケーションで使用されている一部のサードパーティ コントロールについても同じことが言えます。

質問:

DataGridTextColumn のセルのように、スタイルの変更を反映する他の方法はありますか、それともテンプレートの変更に行き詰まっていますか?

補遺:

これはスタイルです:

<Style 
    TargetType="{x:Type TextBox}"
    BasedOn="{StaticResource {x:Type TextBox}}"
    >
    <Setter
        Property="ContextMenu"
        >
        <Setter.Value>
            <ContextMenu>
                <MenuItem
                    Header="Cu_t"
                    Command="ApplicationCommands.Cut"
                    InputGestureText="Ctrl+X"
                    />
                <MenuItem
                    Header="_Copy"
                    Command="ApplicationCommands.Copy"
                    InputGestureText="Ctrl+C"
                    />
                <MenuItem
                    Header="_Paste"
                    Command="ApplicationCommands.Paste"
                    InputGestureText="Ctrl+V"
                    />
                <Separator
                    />
                <MenuItem
                    Header="Select _All"
                    Command="ApplicationCommands.SelectAll"
                    InputGestureText="Ctrl+A"
                    />
            </ContextMenu>
        </Setter.Value>
    </Setter>
</Style>
4

1 に答える 1

1

テキストボックスのスタイルは、スタイルが適用されていないテキストボックスに反映されます。したがって、サードパーティのテキストボックスがあり、すでにキーでスタイルが適用されている場合。あなたのスタイルは失敗します。エクスプレッション ブレンドを使用して、コントロール テンプレートを開いてスタイルを変更したり、そこにテキスト ボックス スタイルがどのように適用されているかを理解したりする必要がある場合があります。

乾杯..

于 2012-11-16T06:56:05.220 に答える