ItemContainerStyle阻止ItemContainerStyleSelector

Wit*_*her 0 wpf listboxitem itemcontainerstyle

我有代码:

<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>
Run Code Online (Sandbox Code Playgroud)

ItemContainerStyleSelector="{StaticResource DeviceListItemStyleSelector}"用来改变每个列表框项目中的背景颜色(例如黑色或银色,请参阅 - http://msdn.microsoft.com/en-us/library/system.windows.controls.styleselector.aspx).它有效.但是,如果我添加ItemContainerStyle="{StaticResource DeviceListItemStyle}"创建一些触发器等DeviceListItemStyle然后DeviceListItemStyleSelector不起作用.请帮帮我!)

Rac*_*hel 6

ItemContainerStyleSelector选择基于某种逻辑,所以很明显设置样式手动将覆盖应用的任何样式的选择样式.

你为什么不设置你的背景颜色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>
Run Code Online (Sandbox Code Playgroud)