2012-01-31 54 views
4

我有這個簡單的風格不會改變ListBoxBackgroundListBox被禁用:禁用列表框沒有改變背景顏色風格

<Style TargetType="ListBox" >      
    <Style.Triggers> 
     <Trigger Property="IsEnabled" Value="True"> 
      <Setter Property="Background" Value="Red"/> 
     </Trigger> 
     <Trigger Property="IsEnabled" Value="False"> 
      <Setter Property="Background" Value="Orange"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

史努比不幫我在這一個,我找不出一個簡單的方式而不會覆蓋模板。任何人都有一個簡單的方法來得到這個工作? TIA。

+0

難道你還設置了ListBox本身的背景嗎? – 2012-01-31 17:54:16

+0

@ H.B - 然後他會凌駕他的風格 – MyKuLLSKI 2012-01-31 17:57:35

+1

ListBox顏色奇怪。這篇文章可能會引導你回答。 http://stackoverflow.com/questions/7298282/wpf-listbox-selected-item-background – Paparazzi 2012-01-31 18:53:35

回答

2

做到這一點的唯一方法是通過重寫模板

+0

看起來像是唯一的出路。 – 2012-02-01 21:22:45

+3

可以喲請分享您在其中覆蓋ListBox模板的工作示例代碼。因爲在我重寫ListBox模板後它不適用於我 – SharpUrBrain 2012-03-30 08:43:30

0

當列表框通過簡單地改變正在使用內置的模板中的顏色禁用您可以更改列表框本身的背景色。你可以通過樣式資源來做到這一點。只需將下面的代碼粘貼到您的Listbox元素中,當您禁用該框時,背景將變爲透明。

<ListBox.Style> 
    <Style TargetType="{x:Type ListBox}"> 
     <Style.Resources> 
      <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/> 
     </Style.Resources> 
    </Style> 
</ListBox.Style> 

這也是很常見的要修改單個項目的背景顏色,當它高亮顯示,當盒子失去焦點。要改變這些,你可以參考這篇文章: https://stackoverflow.com/a/7298301/1721136