在样式设置器中设置CornerRadius的特定成员时出现问题

时间:2011-08-30 13:12:58

标签: wpf coding-style setter

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

1 个答案:

答案 0 :(得分:1)

不是set set工作的方式,cannot set properties of properties,您只能用新的CornerRadius替换整个Property

{{1}}期望一个属性不是属性路径。