2017-07-09 21 views
0

コンボボックスアイテムのハイライトカラー(NOT MouseOver)の変更方法を試していました。私はそれにバインドされているリスト内の要素を検索するために使用される編集可能なコンボボックスを持っています。リストに要素名を入力すると、コンボボックスのドロップダウンにある要素が強調表示されます。運とSet ComboBox selected item highlight color:しかし、要素が コンボボックスアイテムのハイライトカラーを変更するWPF

enter image description here

...見にくいですデフォルトの「ライトグレー」で強調表示された私は、この資料に記載されているデフォルトのハイライトの色を上書きしようとしました。

これもマウスオーバーではなく、ボックス内を検索したり、キーボードの矢印上/下キーを使用してリストを移動したりするときに発生します。私はキーボードのフォーカスプロパティを見ているかもしれませんが、それをテンプレートに実装する方法はわかりません。私に知らせて、必要ならばテンプレートを投稿することができます。

このコンボボックスの新しいテンプレートを開始したばかりなので、すごくきれいでなければなりません。私はちょうどどの要素/トリガー/境界線をターゲットにするべきかを特定できません。

誰もがこれに関する洞察を持っていますか?

答えて

0

は、ここでは、この記事のオフに働くことによってこれに対する答えが見つかりました:Set style on ComboBoxItem from template for ComboBox

を私は「編集可能なコンボボックス」のテンプレートに変更ComboBoxItemテンプレートを適用します。あなたがここに以下を参照することができます私はisEditableをスタイルのトリガーに「ItemContainerStyle」プロパティを追加しました:

<Style x:Key="CmbRoundedAutoComplete" TargetType="{x:Type ComboBox}"> 
     <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/> 
     <Setter Property="Background" Value="{StaticResource ComboBox.Static.Background}"/> 
     <Setter Property="BorderBrush" Value="{StaticResource ComboBox.Static.Border}"/> 
     <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"/> 
     <Setter Property="BorderThickness" Value="1"/> 
     <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/> 
     <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/> 
     <Setter Property="Padding" Value="6,3,5,3"/> 
     <Setter Property="ScrollViewer.CanContentScroll" Value="true"/> 
     <Setter Property="ScrollViewer.PanningMode" Value="Both"/> 
     <Setter Property="Stylus.IsFlicksEnabled" Value="False"/> 
     <Setter Property="Template" Value="{StaticResource ComboBoxTemplate}"/> 
     <Style.Triggers> 
      <Trigger Property="IsEditable" Value="true"> 
       <Setter Property="IsTabStop" Value="false"/> 
       <Setter Property="Padding" Value="2"/> 
       <Setter Property="Template" Value="{StaticResource ComboBoxEditableTemplate}"/> 
       <!-- Added this line here --> 
       <Setter Property="ItemContainerStyle" Value="{DynamicResource ComboBoxItemShieldStyle}" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

をこれがカスタム「ItemContainerStyle」のControlTemplate(に注意することが重要の一部であり、MultiTriggerがありますStyleは実際のControlTemplateではありません)。 ControlTemplate要素はスタイル内にあります。

ComboBoxItemを手動でXAML内の既存のComboBoxに追加し、そこからテンプレートを生成することによって、 "ComboboxItem"テンプレートを生成できます。あなたは私はあなたがコンボボックスのフィールドのいずれかで次のように入力して、選択したりして、それにナビゲートしている項目の背景色を変更することができ、「答えはここにある」コメントしている上記のコードで見ることができます

<MultiTrigger> 
      <MultiTrigger.Conditions> 
       <Condition Property="IsSelected" Value="True"/> 
       <Condition Property="IsMouseOver" Value="False"/> 
       <Condition Property="IsKeyboardFocused" Value="False"/> 
      </MultiTrigger.Conditions> 
     <!-- ANSWER IS HERE Change color on the 2 below lines for border & background --> 
       <Setter Property="Background" TargetName="Bd" Value="#D1E8FF"/> 
       <Setter Property="BorderBrush" TargetName="Bd" Value="#66A7E8"/> 
     </MultiTrigger> 

「結果」(赤い文字で示されています)の中で、現在のアイテムの「背景」は、私の元の質問ではぎっしりした灰色の色ではなく、かなり青い色です...

最終結果:

enter image description here

+0

可能なアイテムのほんの一部を強調する解決策がありますか。私が「オフィス」とタイプしたとき、3人の候補者が利用可能である(上記の写真を参照)。 –

関連する問題