在WPF 4中出现问题,其中默认ProgressBar
模板应用了灰白色突出显示,导致前景色变钝,我决定提取模板并手动将值编辑为白色。
执行此操作后,我将模板作为样式放在App.xaml中供全局使用,Visual Studio设计师立即开始使用它。
但是,当我运行我的应用程序时,仍然会应用默认样式:
Top - Application, Bottom - Designer http://www.nidonocu.com/temp_images/progress_problem.png
然后我尝试使用一个键专门设置样式,然后甚至将它作为内联样式,最后作为内联模板,没有特定进度条的包装样式,它仍然被忽略。
出了什么问题?
ProgressBar
的当前代码:
<ProgressBar Grid.Column="1"
Grid.Row="2"
Height="15"
Width="355"
Margin="0,0,0,7"
IsIndeterminate="{Binding ProgressState, FallbackValue=False}"
Visibility="{Binding ProgressVisibility, FallbackValue=Collapsed}"
Value="{Binding ProgressValue, Mode=OneWay, FallbackValue=100}"
Foreground="{Binding ProgressColor,FallbackValue=Red}">
<ProgressBar.Template>
<ControlTemplate>
<Grid Name="TemplateRoot"
SnapsToDevicePixels="True">
<Rectangle RadiusX="2"
RadiusY="2"
Fill="{TemplateBinding Panel.Background}" />
...
答案 0 :(得分:1)
我发现了我相信的错误。似乎即使模板是从版本中的构建中提取的。模板中的以下触发器存在某种错误:
<Trigger Property="ProgressBar.IsIndeterminate">
<Setter Property="Panel.Background"
TargetName="Animation">
<Setter.Value>
<SolidColorBrush>#80B5FFA9</SolidColorBrush>
</Setter.Value>
</Setter>
<Trigger.Value>
<s:Boolean>False</s:Boolean>
</Trigger.Value>
</Trigger>
一旦我删除了这个触发器(对视觉效果没有明显影响),模板就开始工作了。
答案 1 :(得分:0)
只是为了确定。您将内部Rectangle绑定到Background
属性,而它未在ProgressBar
定义中设置(仅Foreground
存在)。这是对的吗?