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>