我正在使用 WPF 的 ProgressBar 对象,它有一个 Value 属性,我可以向它传递一个常量 int 或十进制值并且它不会抱怨,但是如果我向它传递一个浮点(或 int 或字符串)变量值,它会报错ArgumentException(例如"Message='0.02380952' is not a valid value for property 'Value'."
)对我来说,这对我来说似乎很荒谬,让我难过。我正在关注的MS 示例使用常量浮点值。但是,对 Value 属性的MS 文档引用说它是一个 int,这似乎是错误的,因为我可以将它传递给常量 .1 或 .5 并获得正确的行为,而我的 MS 示例使用 0 和 1 以及最小值和最大值. 那么,我需要在这里做什么?
我的代码:
xml:
<ProgressBar x:Name="prgProgress" Width="200" Height="20" Minimum="0" Maximum="100" />
C#:
float numMems = ListToShow.Count;
float numDone = 0.0f;
int fracDone = 0;
string sProgress = "0%";
foreach (RAM_Member mem in ListToShow)
{
if (isCanceled == true) break;
mem.CalculateValues();
numDone++;
fracDone = (int)(100.0 * numDone / numMems);
sProgress = (100 * numDone / numMems).ToString("0.") + "%";
Dispatcher.BeginInvoke(DispatcherPriority.Background, (SendOrPostCallback)delegate { prgProgress.SetValue(ProgressBar.ValueProperty, fracDone); }, null);
Dispatcher.BeginInvoke(DispatcherPriority.Background, (SendOrPostCallback)delegate { txtProgress.SetValue(TextBlock.TextProperty, sProgress); }, null);
}