首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >进度条前景色

进度条前景色
EN

Stack Overflow用户
提问于 2011-01-19 19:43:03
回答 6查看 53.2K关注 0票数 28

有谁知道如何改变一个WPF-Progressbar的前景颜色。它似乎总是与绿色融合在一起。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-01-19 21:05:15

不幸的是,它是以默认样式硬编码的:

代码语言:javascript
复制
<Trigger Property="IsIndeterminate"
     Value="false">
<Setter TargetName="Animation"
    Property="Background"
    Value="#80B5FFA9"/>

您可以从原始XAML创建自己的样式,或者尝试覆盖已加载事件中的背景,例如:

代码语言:javascript
复制
private void ProgressBar_Loaded(object sender, RoutedEventArgs e)
{
    var p = (ProgressBar)sender;
    p.ApplyTemplate();

    ((Panel)p.Template.FindName("Animation", p)).Background = Brushes.Red;
}

但它并不可靠

票数 18
EN

Stack Overflow用户

发布于 2011-01-19 21:01:28

试一下这个

代码语言:javascript
复制
   <ProgressBar Height="25" IsIndeterminate="True" Width="150" Foreground="Red" ></ProgressBar>

如果它不能按照您的要求工作,您必须修改Progressbar的样式或ControlTemplate。

为此,您可以使用Microsoft的Expression Blend,也可以复制现有模板并对其进行修改。

票数 20
EN

Stack Overflow用户

发布于 2013-11-17 04:53:48

Marat Khasanov指出,不需要的绿色色调来自控件模板中名为"Animation“的对象。所以另一种简单的方法是隐藏该对象。这也将禁用动画的“发光”效果,我认为这是一个资产,但你可能会认为是一个交易杀手。我通过Loaded事件的处理程序实现了这一点,如下所示。

这是受到an answer to another question的启发。同样的警告也适用:如果他们更改了控件模板,那么这可能不再起作用。

代码语言:javascript
复制
    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;

    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4734814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档