Value プロパティを持つ WPF の ProgressBar オブジェクトを使用しています。定数の int または 10 進数の値を渡すことができ、問題はありませんが、float (または int または string) の変数値を渡すと、barfs が発生します。"Message='0.02380952' is not a valid value for property 'Value'."
私にはArgumentException (eg ) が発生しました。私がフォローしているMSの例では、定数の float 値を使用しています。ただし、Value プロパティへのMS doc 参照は、それが 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);
}