我在Listviewitem中有一个包含路径和文本块的stackpanel。
想要编写样式来更改其Listviewitem选择触发器上Path的填充颜色。在<Trigger Property="IsSelected" Value="true">
<Window.Resources>
<Style TargetType="{x:Type Path}">
<Setter Property="Path.Fill" Value="Red" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem}}" Value="True">
<Setter Property="Path.Fill" Value="Gray" />
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<StackPanel>
<ListView>
<ListViewItem >
<StackPanel Name="New" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left">
<Path x:Name="buttonPath" Width="38" Height="38" Canvas.Left="19" Canvas.Top="19" Stretch="Fill" Data="F1 M 38,19C 48.4934,19 57,27.5066 57,38C 57,48.4934 48.4934,57 38,57C 27.5066,57 19,48.4934 19,38C 19,27.5066 27.5066,19 38,19 Z M 33.25,33.25L 33.25,36.4167L 36.4166,36.4167L 36.4166,47.5L 33.25,47.5L 33.25,50.6667L 44.3333,50.6667L 44.3333,47.5L 41.1666,47.5L 41.1666,36.4167L 41.1666,33.25L 33.25,33.25 Z M 38.7917,25.3333C 37.48,25.3333 36.4167,26.3967 36.4167,27.7083C 36.4167,29.02 37.48,30.0833 38.7917,30.0833C 40.1033,30.0833 41.1667,29.02 41.1667,27.7083C 41.1667,26.3967 40.1033,25.3333 38.7917,25.3333 Z "/>
<TextBlock Text="New" FontSize="20px" Width="80px" Margin="5,0,0,0" FontWeight="Bold" />
</StackPanel>
</ListViewItem>
</ListView>
答案 0 :(得分:1)
Path
设置了一个本地值:Fill="#FF000000"
。由于Dependency Property Value Precedence,Style无法覆盖它。
尝试在Style中包含默认设置器:
<Style TargetType="{x:Type Path}">
<Setter Property="Path.Fill" Value="#FF000000" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Path.Fill" Value="Red" />
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Path.Fill" Value="Gray" />
</Trigger>
</Style.Triggers>
</Style>
并删除Fill="#FF000000"
属性。