Tengo un pequeño polígono escrito en el lienzo grande. Quiero resaltar un polígono cuando el mouse se mueve sobre el lienzo. El código es el siguiente:Usar el disparador de estilo para establecer la propiedad de un objeto anidado
<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>
Sin embargo, setter no ve el "polígono".
Funciona, pero solo cuando el mouse está sobre el polígono, no sobre el resto del lienzo. :( – Badiboy
@Badiboy: Bueno, como se señaló en otra respuesta que necesita establecer un fondo en el lienzo de lo contrario no hay una prueba de aciertos. –
@AngelWPF: Si no agrego el código que es deliberado la mayor parte del tiempo, puede hacer que la gente copie y pegue en lugar de entender el concepto. Su código, por ejemplo, usa 'RelativeSource' en el enlace, mientras que habría otras formas, por lo que incluso si el código no se copia, se refuerza cierto método sobre el concepto genérico. . –