WPF ProgressBar - 绑定进度值以显示在栏上

时间:2014-03-19 22:54:01

标签: wpf progress-bar

我有一个进度条模板,如下所示,并为其添加了一个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>

请告诉我,我怎么能做到这一点?还是有另一种方式吗?

1 个答案:

答案 0 :(得分:3)

嗯,是的,您的代码 正确,但TemplateBinding在评估表达式时会使用某种黑魔法(WP7与WP7.1和Silverlight3与4相比存在问题)。实际上,这种绑定只是传统绑定的简写形式(参见下面的示例),并且最好使用后者来防止各种平台上的异常。

只需用这种传统绑定替换TextBlock绑定:

Text='{Binding Path=Value, RelativeSource={RelativeSource AncestorType=ProgressBar}}'

或,甚至更好,这个:

Text='{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}'