我正在尝试为 WPF 中的 ProgressBar 控件制作自定义样式。但 PART_Indicator 正在降低栏右侧的不透明度。 (查看25%、50%、75%的例子)
当栏为 100% 时,这种情况就不会发生。 显示问题的示例屏幕截图 (50%):
一定是这样,不透明度降低(100%):
源代码:http://pastebin.com/jyTDYJjW
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="ProgressBar">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ProgressBar">
<Border BorderThickness="1" BorderBrush="#1E1E1E">
<Grid>
<Rectangle Name="PART_Track">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#2B2B2B" Offset="0"/>
<GradientStop Color="#323232" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Border Name="PART_Indicator" BorderThickness="1" HorizontalAlignment="Left">
<Border.BorderBrush>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#85C0F1" Offset="0"/>
<GradientStop Color="#4C77A3" Offset="1"/>
</LinearGradientBrush>
</Border.BorderBrush>
<Rectangle>
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#66A3E2" Offset="0"/>
<GradientStop Color="#5387BA" Offset="0.5"/>
<GradientStop Color="#4B79AF" Offset="0.5"/>
<GradientStop Color="#385D87" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
</Border>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
这个问题可能与默认的航空风格有关,但我不确定。
所以我的问题是:如何删除这种不透明度渐变裁剪或 WPF 正在执行的任何操作?
尝试将
SnapsToDevicePixels="True"
添加到模板中名称为 Rectangle
的 PART_Indicator
。