2011-08-14 18 views
6

Liste kutusundaki seçili öğenin arka plan rengini ayarlayamıyorum. Bu örnekte alternatif renkleri istemiyorum. Onları teste girdim ve işe yarıyorlar. Tetikleyici IsSelected, fontweight kalınlaştıkça ve ön plan kırmızıya gittikçe ateş ediyor. SteelBlue'a vurgu yapan renk fırçasının ayarlanması, ListBox odağı kaybettiğinde gider olarak istenen etkiyi elde edemez. ListBox odağı kaybettiğinde ve istediğim şey kırmızı ve kalın tutuyor. Seçilen öğeyi almak ve tutmak için arka plan rengini istiyorum. Şu anda seçilen öğeler için arka plan beyazdır ve ListBox odağı kaybettiğinde tutulur. Yardımlarınız için teşekkürler ve önerilen herhangi bir düzeltmeyi test edeceğim.ListBox'ta seçilen öğeler için arka plan rengini ayarlama

<ListBox Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="1" Name="WFEnum" Visibility="Visible" BorderThickness="2" Margin="1" Padding="2,2,7,2" 
      ItemsSource="{Binding Path=SearchItem.SrchWorkFlows}" HorizontalAlignment="Left" 
      PresentationTraceSources.TraceLevel="High" AlternationCount="2" > 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="VerticalContentAlignment" Value="Center" /> 
       <Style.Triggers> 
        <Trigger Property="ItemsControl.AlternationIndex" Value="0"> 
         <Setter Property="Background" Value="LightGreen"></Setter> 
        </Trigger> 
        <Trigger Property="ItemsControl.AlternationIndex" Value="1"> 
         <Setter Property="Background" Value="LightPink"></Setter> 
        </Trigger> 
        <Trigger Property="IsSelected" Value="True" > 
         <Setter Property="FontWeight" Value="Bold" /> 
         <Setter Property="Background" Value="SteelBlue" /> 
         <Setter Property="Foreground" Value="Red" /> 
        </Trigger> 
       </Style.Triggers> 
       <Style.Resources> 
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/> 
       </Style.Resources> 
      </Style> 
     </ListBox.ItemContainerStyle> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding Path=Name, Mode=OneWay}" Background="Transparent" /> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

cevap

14

Sen SystemColors.HighlightBrushKey ile ListBox için SelectedItem Arka Planı belirtmek (Odaklanmış) ve SystemColors.ControlBrushKey (odaklanmamış)

<Style.Resources> 
    <!-- Background of selected item when focussed --> 
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" 
        Color="Green"/> 
    <!-- Background of selected item when not focussed --> 
    <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" 
        Color="LightGreen" /> 
</Style.Resources> 
+9

Bu, 1/2015 itibariyle, bunun standart tema ile System.Windows.Controls.ListBox seçim vurgulama renkleri üzerinde hiçbir etkisi yoktur. Tetikleyiciler Ön Plan için çalışır, ancak Arka Plan değil. ListBoxItem'i yeniden izlemeniz gerekiyor. –

10
<ListBox.Resources> 
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}">SteelBlue</SolidColorBrush> 
</ListBox.Resources> 

bu ek bir anahtar geçersiz kılmak gerek de odak dışı uygulamak istiyorsanız:

<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}">SteelBlue</SolidColorBrush> 
+0

Diğer sözdizimini kabul etmek zorundaydım Biraz temizleyici olarak ben sana bir +1 verdi – Paparazzi

+2

@BalamBalam: "Temiz" tartışmalı ve cevabım yedi dakika daha hızlı oldu, oh, yine de teşekkürler ... –

+1

@ H.B. Üzgünüm, aslında benden önce aynı şeyi cevapladığınızı farketmediniz .. Burada +1 zaten var –

İlgili konular