zoukankan      html  css  js  c++  java
  • WPF 简易进度条效果

    最近做一个项目,看到以前同事写的进度条效果不错,所以,拿来简化了下,不炫,但是项目中还是够用的。

    还是,先来看下调用以后的效果

    1、因为ProgressbBar的Foreground显示不得不一样,所以,要有一个参数去给控件进行设置,因此定义了一个参数值ForegroundColor

    public int ForegroundColor
    {
        get
        {
            return _foregroundColor;
        }
    
        set
        {
            _foregroundColor = value;
            LinearGradientBrush lgb = dictionary["ForegroundColor" + value] as LinearGradientBrush;
            if (lgb != null)
                proBar.Foreground = txt.Foreground = percent.Foreground = lgb;
        }
    }

    代码里有这么一句话“LinearGradientBrush lgb = dictionary["ForegroundColor" + value] as LinearGradientBrush;”是为了方便通过这是这个参数去样式文件里取样式的。

    <LinearGradientBrush x:Key="ForegroundColor1" EndPoint="1,0.5" StartPoint="0,0.5">
        <GradientStop Color="#FFBBF586" Offset="0.5"/>
        <GradientStop Color="#FFD4F9C3" Offset="1"/>
    </LinearGradientBrush>
    <LinearGradientBrush x:Key="ForegroundColor2" EndPoint="1,0.5" StartPoint="0,0.5">
        <GradientStop Color="#FF5BE26E" Offset="0.5"/>
        <GradientStop Color="#FF8DEC9C" Offset="1"/>
    </LinearGradientBrush>
    <LinearGradientBrush x:Key="ForegroundColor3" EndPoint="1,0.5" StartPoint="0,0.5">
        <GradientStop Color="#FFB656F2" Offset="0.5"/>
        <GradientStop Color="#FFAE8DFE" Offset="1"/>
    </LinearGradientBrush>
    <LinearGradientBrush x:Key="ForegroundColor4" EndPoint="1,0.5" StartPoint="0,0.5">
        <GradientStop Color="#FF3AE9E9" Offset="0.5"/>
        <GradientStop Color="#FF8DFDFE" Offset="1"/>
    </LinearGradientBrush>

    2、既然是ProgressBar就要有一个进度值,这个值,我们用TextBlock来进行显示,一定要实现通知接口,这样,才能保证实时的通知到页面上。

    public string ValueText
    {
        get
        {
            return _valueText;
        }
    
        set
        {
            _valueText = value;
            if (this.PropertyChanged != null)
            {
                this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("ValueText"));
            }
        }
    }

    3、启用一个后台线程,来不断的更新进度效果

    private void Bgw_DoWork(object sender, DoWorkEventArgs e)
    {
        for (int i = 0; i < BarValue; i++)
        {
            System.Threading.Thread.Sleep(50);
            proBar.Dispatcher.Invoke(new Action(
                                         delegate
            {
                if (proBar.Value <= BarValue)
                {
                    proBar.Value++;
                }
            }));
            ValueText = i + "";
        }
        ValueText = BarValue + "";
    }

    源码

  • 相关阅读:
    Silverlight 2 应用程序部署到任意HTML页面
    推荐一个工具包自定义HTTP 404错误
    WPF/Silverlight的UI和逻辑完全分离
    ObservableCollection 类
    Silverlight + ModelViewViewModel (MVVM)
    IIS7 request routing 和load balancing module发布
    DeepEarth:使用Silverlight的地图控件
    在Vista安装SQL 2008 Express遭遇属性不匹配错误解决办法
    RIA 应用程序模式
    WinForm界面开发之酒店管理系统报表篇
  • 原文地址:https://www.cnblogs.com/ZXdeveloper/p/7018546.html
Copyright © 2011-2022 走看看