2011-12-15 87 views
0

我的代碼:ItemContainerStyle塊ItemContainerStyleSelector

<ListBox Style="{StaticResource DeviceListBox}" 
       ItemsSource="{Binding MeterList, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" 
       SelectedItem="{Binding CurrentMeter, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" 
       ItemContainerStyleSelector="{StaticResource DeviceListItemStyleSelector}"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Style="{StaticResource DeviceListText}" Text="{Binding Name}" /> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 

我使用ItemContainerStyleSelector="{StaticResource DeviceListItemStyleSelector}"改變背景顏色中的每個列表框的項目(例如黑色或銀色,參見 - http://msdn.microsoft.com/en-us/library/system.windows.controls.styleselector.aspx)。它的工作原理。但是,如果我在DeviceListItemStyle中添加ItemContainerStyle="{StaticResource DeviceListItemStyle}"來創建一些觸發器等,則DeviceListItemStyleSelector不起作用。請幫助我!)

回答

6

ItemContainerStyleSelector基於某些邏輯選擇一個Style,因此很明顯,手動設置Style將覆蓋您的Selector所應用的任何Style。

爲什麼不在你的ItemContainerStyle中設置背景顏色?

<Style x:Key="DeviceListItemStyle" TargetType="{x:Type ListBoxItem}"> 
    <Setter Property="Background" Value="Black" /> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding IsSilver}" Value="True"> 
      <Setter Property="Background" Value="Silver" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 
相關問題