Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF中设置listview ItemContainerStyle_C#_Wpf_Listview_Mvvm - Fatal编程技术网

C# 在WPF中设置listview ItemContainerStyle

C# 在WPF中设置listview ItemContainerStyle,c#,wpf,listview,mvvm,C#,Wpf,Listview,Mvvm,我有一个列表视图,其中的行颜色不同: <Grid> <Grid.Resources> <Style x:Key="RowColorStyle" TargetType="ListViewItem"> <Setter Property="IsSelected" Value="{Binding IsSelected}"/> <Style.Triggers>

我有一个
列表视图
,其中的行颜色不同:

<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>

现在的问题是listview多次定义
ItemContainerStyle
body,因此我试图移动
ItemContainerStyle=“{StaticResource alternatingStyle}”
在刚刚实现的上一个定义的
ItemContainerStyle
部分中,但我不知道如何执行。

我不确定您要问什么,但您可以使用
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>

最后,我通过以下操作解决了这个问题:

<Grid>
    <Grid.Resources>
        <Style x:Key="alternatingStyle" TargetType="ListViewItem">
            <Style.Setters>
                <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
                <EventSetter Event="PreviewMouseLeftButtonDown" Handler="lvi_MouseDown" />
                <EventSetter Event="PreviewMouseMove"  Handler="lvi_MouseMove" />
            </Style.Setters>
            <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>


@mm8解决方案也可以使用BasedOn。

我更喜欢您的解决方案,因为您的解决方案将行交替颜色与其他事件设置器分开。
<Grid>
    <Grid.Resources>
        <Style x:Key="alternatingStyle" TargetType="ListViewItem">
            <Style.Setters>
                <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
                <EventSetter Event="PreviewMouseLeftButtonDown" Handler="lvi_MouseDown" />
                <EventSetter Event="PreviewMouseMove"  Handler="lvi_MouseMove" />
            </Style.Setters>
            <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>