ホームページ  >  記事  >  バックエンド開発  >  WPF で単純な進行状況バーを実装するにはどうすればよいですか?

WPF で単純な進行状況バーを実装するにはどうすればよいですか?

零下一度
零下一度オリジナル
2017-06-23 15:17:554469ブラウズ

最近あるプロジェクトに取り組んでいたのですが、前の同僚が書いたプログレスバーが非常に効果的だったので、それを簡略化しました。目障りではありませんが、それでもプロジェクトでは役に立ちます。

それでも、最初に呼び出し後の効果を見てみましょう

1. ProgressbBar の前景表示は同じである必要があるため、コントロールを設定するパラメーターが必要です。したがって、パラメーター値 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 + "";
}

ソースコード

以上がWPF で単純な進行状況バーを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。