嗨我有一个圆圈,有点想让它在悬停在它上面时有弹出效果。这样做的方法是在鼠标悬停时调整半径。所以基本上我有这个:
<DataTemplate>
<Path x:Name="border" Grid.Row="0" Fill="{Binding Value.Situation, Converter={StaticResource SituationCodeToBrushConverter}}" Stretch="Fill">
<Path.Data>
<GeometryGroup FillRule="EvenOdd">
<EllipseGeometry RadiusX="44" RadiusY="44" Center="50,50" />
<RectangleGeometry Rect="0,0,100,100" />
</GeometryGroup>
</Path.Data>
</Path>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Fill" TargetName="border" Value="{StaticResource BrightBlueBrush}"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
你会注意到通过Trigger我可以用鼠标填充圆圈上的颜色,但是如何进入EllipseGeometry来改变RadiusX和RadiusY
答案 0 :(得分:0)
由于您无法在DataTemplate的触发器中直接访问EllipseGeometry,因此您可以恢复使用Path的Tag
属性的hacky技巧:
<Path x:Name="border" Tag="44" ...>
<Path.Data>
<GeometryGroup FillRule="EvenOdd">
<EllipseGeometry Center="50,50"
RadiusX="{Binding Tag,ElementName=border}"
RadiusY="{Binding Tag,ElementName=border}"/>
<RectangleGeometry Rect="0,0,100,100" />
</GeometryGroup>
</Path.Data>
</Path>
现在可以在Setter中设置Tag
值:
<Setter Property="Tag" TargetName="border" Value="50"/>