我遇到了Microsoft WPF ProgressBar的问题。我将设置宽度=“自动”,宽度将调整为文本宽度,直到值属性为~97。在值97和100之间,控件将以指数方式变大,直到达到MaxWidth。
以下样式是为ProgressBar设置模板。我似乎无法找到任何会导致它直到值为97的行为。我没有触及后面代码中的宽度。
<Style x:Key="CurrentDayProgressBar" TargetType="{x:Type ProgressBar}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ProgressBar}">
<Grid>
<Border Name="PART_Track" CornerRadius="2" Background="DarkGray" BorderBrush="{DynamicResource TextBrush}" BorderThickness="1" />
<Border Name="PART_Indicator" CornerRadius="2" Background="{DynamicResource ProgressBarBackground}" HorizontalAlignment="Left" Margin="2" />
<TextBlock Name="PART_Text" Margin="2" Width="Auto" Padding="5,0,5,0" Text="{Binding RelativeSource={RelativeSource AncestorType=ProgressBar}, Path=Tag}"
Foreground="Black" HorizontalAlignment="Center" VerticalAlignment="Center" Style="{DynamicResource SimpleTextBlock}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
下面的第一张图片是条形值为99.2时的样子。第二个是我在Telerik RadProgressBar中的实现,其行为与我期望的一样。 Telerik解决方案可能是我必须使用的,但是很高兴知道Microsoft控件无法正常工作。
答案 0 :(得分:1)
PART_Track
不能附加任何额外的边距/边框和/或PART_Indicator
应该嵌套在其中。要解决您遇到的问题,请执行以下操作:
<Border CornerRadius="2" Background="DarkGray" BorderBrush="{DynamicResource TextBrush}" BorderThickness="1" />
<Border x:Name="PART_Track" Margin="3">
<Border Name="PART_Indicator" CornerRadius="2" Background="{DynamicResource ProgressBarBackground}" HorizontalAlignment="Left" />
</Border>
<TextBlock ... />