3

コンボボックスの上にマウスを置いて移動すると、コンボボックスの背景 ( mouseover ) の色を変更したいと思います。

私はstackoverflowに関する多くの投稿を読み、次のようなコードを試しました:

<ComboBox.Resources>
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"/>
</ComboBox.Resources>

そしてそれが結果です:

ここに画像の説明を入力

しかし、それは私が望んでいたことではありません。この背景を変更したい:

ここに画像の説明を入力

どうやってやるの?

4

1 に答える 1

2

単純な解決策: ブラシをリソースに追加し、ComboBox の Background プロパティから (StaticResource バインディングを介して) 参照するだけです。

<Window x:Class="WpfApplication2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Window.Resources>
    <SolidColorBrush x:Key="BackgroundColorKey" Color="Red"/>
    <Style TargetType="{x:Type ComboBox}">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="{StaticResource BackgroundColorKey}" />
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>
<Grid>
    <ComboBox  Height="25"/>
</Grid>

問題: 項目を選択すると、背景色がデフォルトの色にリセットされます。これを修正する唯一の解決策は、コンボボックスのデフォルト テンプレートをオーバーライドすることです。

修正: デフォルトの ComboBox テンプレートを変更します。ComboBox の既定のテンプレートは msdn にあります。ここにリンクがあります - http://msdn.microsoft.com/en-us/library/ms752094(v=vs.100).aspx。「ComboBox ControlTemplate の例」セクションを参照してください。

関連リンク:

MouseOver の強調表示スタイルが 1 秒後にデフォルトに戻る (Aero が原因?)

http://social.msdn.microsoft.com/Forums/en/wpf/thread/a18891e9-8879-4819-9679-247341782f60

于 2012-07-23T10:14:09.083 に答える