有谁知道如何改变一个WPF-Progressbar的前景颜色。它似乎总是与绿色融合在一起。
发布于 2011-01-19 21:05:15
不幸的是,它是以默认样式硬编码的:
<Trigger Property="IsIndeterminate"
Value="false">
<Setter TargetName="Animation"
Property="Background"
Value="#80B5FFA9"/>
您可以从原始XAML创建自己的样式,或者尝试覆盖已加载事件中的背景,例如:
private void ProgressBar_Loaded(object sender, RoutedEventArgs e)
{
var p = (ProgressBar)sender;
p.ApplyTemplate();
((Panel)p.Template.FindName("Animation", p)).Background = Brushes.Red;
}
但它并不可靠
发布于 2011-01-19 21:01:28
试一下这个
<ProgressBar Height="25" IsIndeterminate="True" Width="150" Foreground="Red" ></ProgressBar>
如果它不能按照您的要求工作,您必须修改Progressbar的样式或ControlTemplate。
为此,您可以使用Microsoft的Expression Blend,也可以复制现有模板并对其进行修改。
发布于 2013-11-17 04:53:48
Marat Khasanov指出,不需要的绿色色调来自控件模板中名为"Animation“的对象。所以另一种简单的方法是隐藏该对象。这也将禁用动画的“发光”效果,我认为这是一个资产,但你可能会认为是一个交易杀手。我通过Loaded事件的处理程序实现了这一点,如下所示。
这是受到an answer to another question的启发。同样的警告也适用:如果他们更改了控件模板,那么这可能不再起作用。
public void ProgressBar_Loaded(object sender, RoutedEventArgs e)
{
var progressBar = sender as ProgressBar;
if (progressBar == null) return;
var animation = progressBar.Template.FindName("Animation", progressBar) as FrameworkElement;
if (animation != null)
animation.Visibility = Visibility.Collapsed;
}
https://stackoverflow.com/questions/4734814
复制相似问题