我在ControlTemplate
中正确解析语法时遇到了一些困难。这里是它的基本功能:用触发器设置BorderBrush的颜色
<ControlTemplate TargetType="{x:Type foo:bar">
<Border Name="Bd">
<Border.BorderBrush>
<SolidColorBrush Color="{DynamicResource DefaultBorderBrushLightBrush}" />
</Border.BorderBrush>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="(Border.BorderBrush).(SolidColorBrush.Color)"
TargetName="Bd"
Value="{DynamicResource PressedBorderDarkColor}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate
这就产生了错误味精
无法解析模板属性“颜色)”。验证拥有的类型是Style的TargetType,还是使用Class.Property语法来指定属性。
这似乎很清楚 - 我没有正确指定目标属性。我尝试了几种不同的方法。具体来说,我试过
<Setter Property="BorderBrush" TargetName="Bd">
<Setter.Value>
<SolidColorBrush Color="{DynamicResource PressedBorderDarkColor}" />
</Setter.Value>
</Setter>
...这样做,我想,给我我在找什么。
不过,为什么我不能设置笔刷颜色?我将如何指定它?
更广泛地说,我可以在哪里了解关于此“Class.Property语法”的更多信息?我通过MSDN的XAML Syntax In Detail阅读,但如果它覆盖在那里,我担心我忽略了它。
我带领相信在这种情况下,有转换器在后台将字符串转换为画笔。由于我引用的资源是颜色,而不是画笔或字符串,因此此语法对我无效。 所以...... Class.Property语法只在内部故事板中有效吗?为什么它不在这里工作? – mcwyrm
@mcwyrm:'Class.Property'在Styles和Storyboard中的每个地方都是有效的。 Storyboard的'TargetProperty'属性支持复杂的语法('(Border.BorderBrush)。(SolidColorBrush.Color)'),使您能够定位其他属性的属性。有关定义属性的不同方法的详细说明,请参阅['Storyboards'](http://msdn.microsoft.com/zh-cn/library/ms742868(v = vs.110).aspx)。 –
感谢您的链接。我会在那里阅读更多。 – mcwyrm