gpt4 book ai didi

wpf - 使用样式触发器设置嵌套对象的属性

转载 作者:行者123 更新时间:2023-12-03 00:51:53 25 4
gpt4 key购买 nike

我在大 Canvas 上写了一个小多边形。我想当鼠标在 Canvas 上移动时突出显示多边形。代码是这样的:

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

但是设置者看不到“多边形”。

最佳答案

您不能使用Setters像这样,如果您使用这种符号,引擎将查找附加属性,或者如果没有 Style.TargetType为点之前的类型的属性设置。

最简单的事情可能是将样式应用于多边形本身并使用 DataTrigger绑定(bind)到 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>

关于wpf - 使用样式触发器设置嵌套对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7965409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com