如何在Listviewitem选择触发器wpf上更改victor图像的填充颜色

时间:2017-12-14 07:09:31

标签: wpf vector styles

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

1 个答案:

答案 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"属性。