WPF Button ControlTemplate高度绑定返回NaN

时间:2016-10-10 16:12:32

标签: c# wpf xaml data-binding

我试图将WPF按钮的角半径动态设置为一半按钮'高度,使两端完全圆整。

Window资源中的条目如下所示,但CornerRadius绑定不绑定,并将NaN传递给值转换器。

我尝试用Binding替换TemplateBinding无效。 Snoop在CornerRadius属性上显示错误,设置为NaN。我错过了一些明显的东西吗?

<Style TargetType="Button">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid x:Name="grid">
                    <Border x:Name="border" BorderBrush="#FFFEFEFF" BorderThickness="2" CornerRadius="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Height,Converter={StaticResource HalfConverter}}">
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"></ContentPresenter>
...

1 个答案:

答案 0 :(得分:2)

不应绑定到控件的Height(除非显式设置为Double.NaN),否则应绑定到其ActualHeight属性:

CornerRadius="{Binding Path=ActualHeight, 
                       RelativeSource={RelativeSource TemplatedParent},
                       Converter={StaticResource HalfConverter}}">