在WPF应用程序中,我定义了一个进度条。
<ProgressBar Minimum="0" Maximum="{Binding TotalItemCount}" Value="{Binding CurrentItemCount, UpdateSourceTrigger=PropertyChanged}" />
但是我遇到了进度条完全填充的问题,即在启动应用程序后直接100%,尽管我最初将属性设置为以下值:
TotalItemCount = 0;
CurrentItemCount = 0;
只要我将TotalItemCount
更改为1
,进度条就会正确设置为0%。在我看来,控件从0解释0为100%。
如何将进度条初始化为0%?
答案 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,就会隐藏进度条。