如果通过TemplateBinding将该属性绑定到其控件模板中,我似乎无法绑定属性。这看起来很奇怪,所以我尝试了一个虚拟的例子:
<Button x:Name="Button" Content="Button" FontSize="24" />
<Button Style="{StaticResource SomeStyle}" Content="SomeContent"
FontSize="{Binding FontSize, ElementName=Button}"/>
<Style x:Key="SomeStyle" TargetType="{x:Type Button}">
<Setter Property="Foreground" Value="White" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="Border" Background="Blue">
<TextBlock FontSize="{TemplateBinding FontSize}" Text="{TemplateBinding Content}"
Foreground="{TemplateBinding Foreground}" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
更改第一个按钮的FontSize不会影响第二个按钮。我做错了什么或这是预期的行为?我认为Button的FontSize存储在TextBlock的一个单独的属性中,并且具有两级绑定可以正常工作。