簡體   English   中英

將C#xaml進度條的最大值設置為可變值

[英]Setting C# xaml progress bar's maximum value to a variable value

我的代碼中有一個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界面選擇文件后確定的。 它的值等於文件中的行數。 每次更新時,進度條都會以固定的整數值遞增。

您需要執行以下操作:

if(_needToChangeProgressBarValue)
{
    pb_Run.Maximum = yourvariable;
}

您可以使用WPF的數據bindnig將進度條的最大值與后面代碼中的值綁定。

查看此帖子以獲取示例。

在此問題之后,進度條問題就增加了。 我不需要使用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 });
                }

希望這對某人有類似問題有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM