2011-08-14 204 views
6

我無法設置列表框上選定項目的背景顏色。在這個例子中,我不需要交替的顏色。我把他們作爲一個測試,他們的工作。觸發器IsSelected正在觸發,因爲前進到粗體且前景變爲紅色。將高亮顏色刷設置爲SteelBlue不會達到預期的效果,因爲當ListBox失去焦點時它會消失。當ListBox失去焦點並且是我想要的時候,紅色和粗體會保持不變。我想要背景顏色採取和舉行選定的項目。現在所選項目的背景爲白色,並在列表框失去焦點時保留。感謝您的幫助,我會測試任何建議的修復。設置列表框中選定項目的背景顏色

<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> 

回答

14

您指定與SystemColors.HighlightBrushKey一個ListBox的背景的SelectedItem(專注)和SystemColors.ControlBrushKey(不專注)

<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

值得一提的是,截至2015年1月,這對標準主題的System.Windows.Controls.ListBox的選擇高亮顏色沒有影響。觸發器適用於前臺,但不適用於後臺。你必須重新設定ListBoxItem。 –

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

如果你想這個應用失焦,以及你需要重寫附加鍵:

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

我不得不接受另一個語法作爲一個小清潔,但我給你+1謝謝 – Paparazzi

+2

@BalamBalam:「乾淨」是有爭議的,我的答案是七分鐘快,哦,好吧,謝謝不管怎麼說... –

+1

@ H.B。對不起,實際上並沒有注意到你在我之前回答了幾乎相同的事情。無論如何,這裏是+1 –

相關問題