我的代码中有一个xaml进度条,我想将最大值设置为等于我的代码中其他地方确定的int。我怎么能这样做?
<ProgressBar Name="pb_Run" HorizontalAlignment="Left" Height="4" Margin="0,166,0,0" VerticalAlignment="Top" Width="960" IsIndeterminate="False" Minimum="0" Maximum="**some_variable_value_here**"/>
一些其他信息。在用户选择文件的xaml接口之后确定变量值。它的值等于文件中行数。每次更新时,进度条都会增加一个固定的整数值。
答案 0 :(得分:2)
你需要做这样的事情:
if(_needToChangeProgressBarValue)
{
pb_Run.Maximum = yourvariable;
}
答案 1 :(得分:1)
您可以使用WPF的数据绑定将进度条的最大值与后面代码中的值绑定。
检查this post以获取示例。
答案 2 :(得分:0)
在这个问题之后,进度条问题增长了。我不需要使用xaml代码。最终设置最大值就像添加以下代码一样简单:
pb_Run.Maximum = loanCNT;
更大的问题是如何增加进度条的值。事实证明,将进度条值增加到for循环(紧密循环)需要调度程序。为此,添加了以下代码:
UpdateProgressBarDelegate updatePbDelegate = new UpdateProgressBarDelegate(pb_Run.SetValue);
pb_Run.Maximum = loanCNT;
double progressBarValue=0;
private delegate void UpdateProgressBarDelegate(System.Windows.DependencyProperty dp, Object value);
新的for循环:
for (int obs = 0; obs < loanCNT; obs++)
{
line = sr.ReadLine();
Processing.Run(new Loan(), line);
progressBarValue += 1;
Dispatcher.Invoke(updatePbDelegate,System.Windows.Threading.DispatcherPriority.Background, new object[] { ProgressBar.ValueProperty, progressBarValue });
}
希望如果他们遇到类似的问题,这会有所帮助。