Я использую объект ProgressBar WPF, у которого есть свойство Value, и я могу передать ему постоянное int или десятичное значение, и оно не будет жаловаться, но если я передам ему значение переменной с плавающей запятой (или int, или string),это вызывает у меня ArgumentException (например, "Message='0.02380952' is not a valid value for property 'Value'."
), что мне просто кажется нелепым, и ставит меня в тупик.Пример MS , который я использую, использует постоянные значения с плавающей запятой.Ссылка MS doc на свойство Value , однако, говорит, что это int, что кажется неправильным, поскольку я могу передать его константу .1 или .5 и получить правильное поведение, а мой пример MS использует 0 и 1и минимальное и максимальное значения.Итак, что мне нужно сделать здесь?
Мой код:
xaml:
<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);
}