我有一个进度条模板,如下所示,并为其添加了一个textbloxk,以在条形图上显示进度值。 我试图使用TemplateBinding将进度条的值/工具提示绑定到TextBlock的文本,但它不起作用。
<ControlTemplate TargetType="{x:Type ProgressBar}">
<Grid>
<Border Name="PART_Track" CornerRadius="10" Background="{StaticResource PressedBrush}"
BorderBrush="{StaticResource SolidBorderBrush}" BorderThickness="1" />
<Border Name="PART_Indicator" CornerRadius="10" Background="{StaticResource DarkBrush}"
BorderBrush="{StaticResource NormalBorderBrush}" BorderThickness="1" HorizontalAlignment="Left" Margin="2">
<TextBlock TextAlignment="Right" Margin="0,3,5,0" Text="{TemplateBinding ProgressBar.Value}" />
</Border>
</Grid>
</ControlTemplate>
请告诉我,我怎么能做到这一点?还是有另一种方式吗?
答案 0 :(得分:3)
嗯,是的,您的代码 正确,但TemplateBinding
在评估表达式时会使用某种黑魔法(WP7与WP7.1和Silverlight3与4相比存在问题)。实际上,这种绑定只是传统绑定的简写形式(参见下面的示例),并且最好使用后者来防止各种平台上的异常。
只需用这种传统绑定替换TextBlock
绑定:
Text='{Binding Path=Value, RelativeSource={RelativeSource AncestorType=ProgressBar}}'
或,甚至更好,这个:
Text='{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}'