14

WPFTextBoxは、選択したテキストの背景を描画するためにシステム ハイライト カラーをネイティブに使用します。OS/ユーザーのテーマによって異なるため、これをオーバーライドして一貫性を持たせたいと考えています。

ListBoxItemの場合、 のリソース キーをオーバーライドして、特定の設定でシステム ハイライトの色をカスタマイズできる巧妙なトリック(以下を参照) があります。HighlightBrushKey

<Style TargetType="ListBoxItem">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
                         Color="LightGreen"/>
    </Style.Resources>
</Style>

TextBox残念ながら、同じトリックは機能しません。「オーバーライド」以外に他のアイデアはありますControlTemplateか?

注: この動作は WPF 4 に追加されたようです。

4

5 に答える 5

10

スティーブが述べたように:注:この動作はWPF4に追加されているようです。

私は同じ問題にぶつかりました。

Dr.WPFが言うように

「現在の.NETリリース(3.0および3.5ベータ版)では完全に不可能です。コントロールはシステム設定を使用するようにハードコードされています...コントロールテンプレートをまったく参照しません。」

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/bbffa6e3-2745-4e72-80d0-9cdedeb69f7f/

于 2009-01-02T08:51:16.387 に答える
0

これは、アプリ内SelectionBrushのそれぞれをカスタマイズする Windows 8.1 .Net 4.6.1 でテストされたソリューションです。TextBox

/// Constructor in App.xaml.cs
public App() : base()
{
    // Register an additional SelectionChanged handler for appwide each TextBox
    EventManager.RegisterClassHandler(typeof(TextBox), TextBox.SelectionChangedEvent, RoutedEventHandler(_textBox_selectionChanged));
}

private void _textBox_selectionChanged(object sender, RoutedEventArgs e)
{
    // Customize background color of selected text
    (sender as TextBox).SelectionBrush = Brushes.MediumOrchid;

    // Customize opacity of background color
    (sender as TextBox).SelectionOpacity = 0.5;
}

含めたい場合は、タイプ名を4 回RichTextBox置き換えます。TextBoxTextBoxBase

于 2015-12-20T13:44:59.727 に答える
-1

TextBoxのスタイルを作成し、背景のセッターを作成できます。ビジュアルツリーの下にあるすべてのTextBoxが変更されたTextBoxを取得できるように、TextBoxスタイルをデフォルトにする必要があります。

<Style x:Key="{x:Type TextBox}" TargetType="{x:Type TextBox}">
于 2009-01-02T08:45:26.960 に答える