我为进度条创建了一个控件模板,其中包含一个文本块,我想根据下载的文件的百分比将更新文本放入其中。
我没有问题获得%等等。我只是想知道如何从c#代码中定位文本块。
这是我的controltemplate
<Style TargetType="{x:Type ProgressBar}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ProgressBar}">
<Grid>
<Rectangle Stroke="#FF000000" RenderTransformOrigin="0.5,0.5" x:Name="PART_Track" RadiusX="5" RadiusY="50">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="White" Offset="0" />
<GradientStop Color="Gray" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle Stroke="#FF000000" RenderTransformOrigin="0.5,0.5" x:Name="PART_Indicator" HorizontalAlignment="Left" RadiusX="5" RadiusY="50">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF023501" Offset="1.0"/>
<GradientStop Color="#FFB6F9B4" Offset="0"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Viewbox>
<TextBlock TextAlignment="Center" Background="Transparent" FontFamily="Times" Foreground="Black" x:Name="ProgressText" Margin="2,2,2,2">Test
</TextBlock>
</Viewbox>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
在我的屏幕上看起来由于某种原因它没有显示所有代码,无论如何,我正在尝试将TextBlock x作为目标:名称为“ProgressText”
答案 0 :(得分:1)
您是否尝试将文本绑定到组合框值?
<TextBlock TextAlignment="Center" Foreground="Black" x:Name="ProgressText"
Margin="2,2,2,2"
Text={TemplateBinding Value,
Converter={StaticResource DoubleToPercent}}/>
当然,您需要指定一个转换器,但作为概念验证,您可以尝试使用它。
编辑:
您必须使用多重绑定,因为您的百分比值还取决于最小值和最大值:
<TextBlock TextAlignment="Center" Foreground="Black" x:Name="ProgressText"
Margin="2,2,2,2">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource DoubleToPercent}">
<TemplateBinding Path="Value" />
<TemplateBinding Path="Minimum" />
<TemplateBinding Path="Maximum" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
免责声明:我没有尝试此代码。