我有许多 PathGeometry 实例,它们为不同的按钮绘制各种图形。所以我创建了一个按钮类型来显示一个路径,然后根据按钮状态更新 Path.Stroke。因此,禁用时显示为灰色,鼠标悬停时显示不同的颜色。标准的东西...
<Style x:Key="BasePathButton" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Name="Border"
<Path x:Name="Path" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Path" Property="Stroke" Value="Gray"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Path" Property="Stroke" Value="Green"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="Path" Property="Stroke" Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
但显然我需要为每个按钮实例使用不同的 Path.Data。所以我创建了一个 BasedOn 样式来设置 Path.Data 像这样......
<Style x:Key="NLB" TargetType="{x:Type Button}" BasedOn="{StaticResource BasePathButton}">
<Setter TargetName="Path" Property="Data" Value="{StaticResource LeftPathGeometry}"/>
</Style>
...但这会失败,并出现无法找到 TargetName="Path" 的错误。任何想法如何解决这一问题?或者也许是创建一个具有使用几何参数化的路径的按钮的更好方法?