在WPF中设置listview ItemContainerStyle

use*_*552 2 c# wpf listview mvvm

我有一个ListView哪些行交替颜色:

<Grid>
    <Grid.Resources>
        <Style x:Key="RowColorStyle" TargetType="ListViewItem">
            <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
            <Style.Triggers>
                <Trigger Property="ItemsControl.AlternationIndex"  Value="0">
                    <Setter Property="Background" Value="LightBlue" />
                </Trigger>
                <Trigger Property="ItemsControl.AlternationIndex"  Value="1">
                    <Setter Property="Background" Value="LightGray" />
                </Trigger>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Background" Value="Orange"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Grid.Resources>

    <ListView ItemContainerStyle="{StaticResource alternatingStyle}" AlternationCount="2">
    </ListView>

</Grid>
Run Code Online (Sandbox Code Playgroud)

现在我已将列表视图设置ItemContainerStyle如下:

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
        <EventSetter Event="PreviewMouseLeftButtonDown" Handler="lvi_MouseDown" />
        <EventSetter Event="PreviewMouseMove"  Handler="lvi_MouseMove" />
    </Style>
</ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)

现在的问题是列表视图ItemContainerStyle多次定义主体,所以我试图在刚刚实现的ItemContainerStyle="{StaticResource alternatingStyle}"最后一个定义的ItemContainerStyle部分内移动,但我不知道该怎么做。

mm8*_*mm8 5

我不确定您在问什么,但您可以Style使用该属性以另一个为基础BasedOn

<ListView AlternationCount="2">
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem" BasedOn="{StaticResource alternatingStyle}">
            <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
            <EventSetter Event="PreviewMouseLeftButtonDown" Handler="lvi_MouseDown" />
            <EventSetter Event="PreviewMouseMove"  Handler="lvi_MouseMove" />
        </Style>
    </ListView.ItemContainerStyle>
</ListView>
Run Code Online (Sandbox Code Playgroud)