WPF列表视图.如何同时支持行背景色和alternateIndex为这一行



我有一个包含日志消息的listview。我想根据listview中对应条目的严重性为每一行设置背景颜色。我使用DataTrigger (参见示例)

我也想为listview支持AlternationIndex。如何将它们组合在 xaml DataTrigger abd Trigger 中用于行背景色?

为行设置背景色,使用以下代码:

<ListView ... >
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=Severity} Value="Info">
                   <Setter 
                     Property="Background" 
                     Value="{Binding Path=Severity,
                             Converter=
                               {StaticResource msgSeverityToColorConverter}}" 
                   />
                 </DataTrigger>
                 <DataTrigger Binding="{Binding Path=Severity} Value="Error">
                   <Setter 
                     Property="Background" 
                     Value="{Binding Path=Severity, 
                             Converter=
                            {StaticResource msgSeverityToColorConverter}}"
                    />
                 </DataTrigger>
            </Style.Triggers>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

对于AlternateIndex,我有以下代码:

<Style.Triggers>
    <Trigger Property="ItemsControl.AlternationIndex" Value="1">
        <Setter Property="Background" Value="LightBlue"></Setter>
     </Trigger>
    <Trigger Property="ItemsControl.AlternationIndex" Value="2">
   <Setter Property="Background" Value="LightGray"></Setter>
    </Trigger>
 </Style.Triggers>

我需要,当行与消息不是InfoError,它将从AlternationIndex属性的颜色。

这完全取决于触发器声明的顺序。首先声明交替触发器,然后声明严重性触发器。

<Style.Triggers>
    <Trigger Property="ItemsControl.AlternationIndex" Value="1">
        <Setter Property="Background" Value="LightBlue"></Setter>
    </Trigger>
    <Trigger Property="ItemsControl.AlternationIndex" Value="2">
       <Setter Property="Background" Value="LightGray"></Setter>
    </Trigger>
    <DataTrigger Binding="{Binding Path=Severity} Value="Info">
        <Setter Property="Background" 
                Value="{Binding Path=Severity,
                Converter="{StaticResource msgSeverityToColorConverter}}" />
    </DataTrigger>
    <DataTrigger Binding="{Binding Path=Severity} Value="Error">
        <Setter Property="Background" 
                Value="{Binding Path=Severity, 
                Converter="{StaticResource msgSeverityToColorConverter}}" />
    </DataTrigger>
</Style.Triggers>

最新更新