在ControlTemplate的参考资料部分,我尝试使用DataTrigger中的setter来修改Border上的单个角半径:
<Style x:Key="SectionBorder" TargetType="{x:Type Border}" >
<Setter Property="CornerRadius" Value="5" />
<Style.Triggers>
<DataTrigger Binding="{Binding HasChildSection, RelativeSource={RelativeSource TemplatedParent}}" Value="True">
<Setter Property="(Border.CornerRadius).(CornerRadius.BottomLeft)" Value="0" />
<Setter Property="(Border.CornerRadius).(CornerRadius.BottomRight)" Value="0" />
</DataTrigger>
</Style.Triggers>
</Style>
这会生成编译器错误:
“无法解析样式属性'BottomLeft''。验证拥有类型是Style的TargetType,或使用Class.Property语法指定属性。”
WPF是否因为CornerRadius是属性名称和类型名称而感到困惑?或者我没有正确使用“Class.Property语法”?如果我只对Property使用“CornerRadius.BottomLeft”,我会在运行时得到一个XamlParseException,说明Property不能设置为null。
答案 0 :(得分:1)
不是set set工作的方式,cannot set properties of properties,您只能用新的CornerRadius
替换整个Property
。
{{1}}期望一个属性不是属性路径。