我有一个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>现在我已经设置了listview 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>现在的问题是,listview不止一次定义了ItemContainerStyle主体,所以我试图在刚刚实现的最后一个定义的ItemContainerStyle部分中移动ItemContainerStyle="{StaticResource alternatingStyle}",但我不知道该怎么做。
发布于 2017-07-03 22:33:22
我不确定您在问什么,但是您可以使用BasedOn属性将一个Style建立在另一个基础上:
<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>发布于 2017-07-03 22:46:44
最后,我通过以下操作解决了这个问题:
<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。
https://stackoverflow.com/questions/44888051
复制相似问题