在样式设置器中设置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期望一个属性不是属性路径。

链接地址: http://www.djcxy.com/p/81353.html

上一篇: Problem setting specific member of CornerRadius in style setter

下一篇: How to add a tooltip to a div