将C#xaml进度条的最大值设置为变量值

时间:2014-08-07 14:50:02

标签: c# xaml variables max

我的代码中有一个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接口之后确定变量值。它的值等于文件中行数。每次更新时,进度条都会增加一个固定的整数值。

3 个答案:

答案 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 });
                }

希望如果他们遇到类似的问题,这会有所帮助。