1

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

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

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

TotalItemCount = 0;
CurrentItemCount = 0;

一旦我更改TotalItemCount1进度条正确设置为 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

您可以为 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 回答
1

我做了一些小伙伴的建议:只要计数器为0,进度条就会隐藏。

于 2013-03-13T08:19:24.600 回答