启动后WPF进度条为100%

时间:2013-02-21 12:52:35

标签: c# wpf data-binding progress-bar

在WPF应用程序中,我定义了一个进度条。

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

但是我遇到了进度条完全填充的问题,即在启动应用程序后直接100%,尽管我最初将属性设置为以下值:

TotalItemCount = 0;
CurrentItemCount = 0;

只要我将TotalItemCount更改为1,进度条就会正确设置为0%。在我看来,控件从0解释0为100%。

如何将进度条初始化为0%?

3 个答案:

答案 0 :(得分:3)

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

...

ProgressBar Minimum="0" Maximum="{Binding MaxCountForProgress}" Value="{Binding CurrentItemCount, UpdateSourceTrigger=PropertyChanged}"

答案 1 :(得分: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; 
    }
}

答案 2 :(得分:0)

我做了一些研究员提出的建议:只要计数器为0,就会隐藏进度条。