1

WPFアプリケーションで、プログレスバーを定義しました。

<ProgressBar Minimum="0" Maximum="{Binding TotalItemCount}" Value="{Binding CurrentItemCount, UpdateSourceTrigger=PropertyChanged}" />

ただし、最初にプロパティを次の値に設定したにもかかわらず、進行状況バーが完全にいっぱいになる、つまりアプリケーションを開始した直後に100%になるという問題があります。

TotalItemCount = 0;
CurrentItemCount = 0;

TotalItemCountプログレスバーに変更するとすぐに1、0%に正しく設定されます。コントロールは、0から0を100%と解釈しているように見えます。

プログレスバーの初期化を0%に修正するにはどうすればよいですか?

4

3 に答える 3

3
public int MaxCountForProgress 
{
  get
  {
    if (TotalItemCount == 0)
      return int.MaxValue;
    return TotalItemCount;
  }
}

...

ProgressBar Minimum="0" Maximum="{Binding MaxCountForProgress}" Value="{Binding CurrentItemCount, UpdateSourceTrigger=PropertyChanged}"
于 2013-02-21T13:13:50.240 に答える
1

私は何人かのフェローが提案したことを行いました: カウンターが 0 である限り、プログレス バーは隠されています。

于 2013-03-13T08:19:24.600 に答える
1

次のように、ProgressBar の最大値のコンバーターを作成できます。

[ValueConversion(typeof(double), typeof(double))]
public class ProgressBarMaximumConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if ((double)value == 0)
        {
            return 1;
        }

        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return null; 
    }
}
于 2013-02-21T13:17:17.020 に答える