我在大画布上写了一个小多边形.我想在鼠标在画布上移动时突出显示多边形.代码是这样的:
<UserControl ...>
<Canvas Name="canvas" Height="22" Width="22">
<Canvas.Resources>
<Style TargetType="Canvas">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="false">
<Setter Property="polygon.Stroke" Value="#EEEEEE"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="polygon.Stroke" Value="Aqua"/>
</Trigger>
</Style.Triggers>
</Style>
</Canvas.Resources>
<Polygon Points="11,1 16,6 16,16 11,21" Name="polygon">
<Polygon.Fill>
<SolidColorBrush Color="#EEEEEE"/>
</Polygon.Fill>
</Polygon>
</Canvas>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
但是,setter看不到"多边形".
H.B*_*.B. 19
你不能这样使用Setters,如果使用这种表示法,引擎会查找附加属性,或者如果没有Style.TargetType为点之前的类型设置属性.
最简单的方法是将样式应用于多边形本身,并使用DataTrigger绑定到的多边形,Canvas以便触发其属性.
<Polygon Points="11,1 16,6 16,16 11,21" Name="polygon">
<Polygon.Fill>
<SolidColorBrush Color="#EEEEEE"/>
</Polygon.Fill>
<Polygon.Style>
<Style TargetType="{x:Type Polygon}">
<Style.Triggers>
<DataTrigger
Binding="{Binding Path=IsMouseOver,
RelativeSource={RelativeSource
AncestorType={x:Type Canvas}}}"
Value="True">
<Setter Property="Stroke" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
<Polygon.Style>
</Polygon>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18701 次 |
| 最近记录: |