我有一个Button样式,似乎无法将边框的CornerRadius属性数据绑定到模板。这是一个依赖属性,因此它应该是数据可绑定的。我想知道我是否缺少使用正确的XAML语法?
<Style TargetType="{x:Type Button}" BasedOn="{x:Null}">
<Setter Property="FocusVisualStyle" Value="{DynamicResource MyButtonFocusVisual}"/>
<Setter Property="Background" Value="{DynamicResource MyButtonBackgroundBrush}"/>
<Setter Property="Foreground" Value="{DynamicResource MyButtonForegroundBrush}"/>
<Setter Property="BorderBrush" Value="{DynamicResource MyButtonBorderBrush}"/>
<Setter Property="BorderThickness" Value="3"/>
<Setter Property="FontFamily" Value="Segoe UI"/>
<Setter Property="FontSize" Value="14" />
<Setter Property="CornerRadius" Value="2" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<!-- We use Grid as a root because it is easy to add more elements to customize the button -->
<Grid x:Name="Grid">
<Border x:Name="Border" CornerRadius="{TemplateBinding CornerRadius}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
两者和CornerRadius =“{TemplateBinding CornerRadius}”给我错误“CornerRadius无法识别或无法访问”。
答案 0 :(得分:5)
您正尝试在类CornerRadius
上设置/绑定Button
属性,但没有此类属性。所以错误是预期的。
答案 1 :(得分:1)
肯特是对的。解决这个问题的方法是创建自己的自定义控件,该控件继承自按钮类。然后在此派生类中,创建一个依赖项属性并将其注册到CornerRadius属性的窗口。然后你可以使用上面的代码,但不是在Button控件上设置style属性,而是在派生类上设置style属性。