在样式设置器中设置CornerRadius的特定成员时出现问题
在ControlTemplate的Resources部分中,我尝试在DataTrigger中使用setter来修改边框上的各个角半径:
<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)'。验证拥有的类型是样式的TargetType,还是使用Class.Property语法来指定属性。”
是WPF变得困惑,因为CornerRadius是属性名称和类型名称? 或者我没有正确使用“Class.Property语法”? 如果我只是使用“CornerRadius.BottomLeft”作为属性,我会在运行时得到一个XamlParseException,指出Property不能设置为null。
这不是setter的工作方式,你不能设置属性的属性,你只能用一个新CornerRadius
替换整个CornerRadius
。
Property
期望一个属性不是属性路径。
上一篇: Problem setting specific member of CornerRadius in style setter