C# 如何根据进度百分比更改标签内容
在我的项目中,我只是将一些文件从源复制到目标。在复制文件期间,我会增加进度值。现在,我想添加一个标签内容,在复制过程中是“复制”,然后在完成文件复制后是“完成”。我的代码不起作用C# 如何根据进度百分比更改标签内容,c#,C#,在我的项目中,我只是将一些文件从源复制到目标。在复制文件期间,我会增加进度值。现在,我想添加一个标签内容,在复制过程中是“复制”,然后在完成文件复制后是“完成”。我的代码不起作用 <StackPanel> <StackPanel.Resources> <Style TargetType="Label"> <Style.Triggers>
<StackPanel>
<StackPanel.Resources>
<Style TargetType="Label">
<Style.Triggers>
<DataTrigger Binding="{Binding ProgressPercentage}" Value="0">
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
<DataTrigger Binding="{Binding ProgressPercentage}" Value="100">
<Setter Property="Content" Value="Completed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Resources >
<Label Content="Copying Files" Height="30" Width="100"/>
</StackPanel >
在处理过程中,您必须使用后台工作程序来更新进度 定义后台工作程序:
private BackgroundWorker SyncBgWorker = new BackgroundWorker();
为后台工作程序添加所需的事件
SyncBgWorker.DoWork += new DoWorkEventHandler(SyncBgWorkerOnDoWork);// the process should be here
SyncBgWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);// if the process completed do this
SyncBgWorker.ProgressChanged += worker_ProgressChanged;//while processing do this
SyncBgWorker.WorkerSupportsCancellation = false;
SyncBgWorker.WorkerReportsProgress = true;//to get the progress
事件/方法
private void SyncBgWorkerOnDoWork(object sender, DoWorkEventArgs doWorkEventArgs)
{
//some codes
SyncBgWorker.ReportProgress(10);//to update the progress value
//some codes
SyncBgWorker.ReportProgress(50);//to update the progress value
//some codes
SyncBgWorker.ReportProgress(100);//to update the progress value
}
private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
var objProgressBar = (ProgressBar)this.GetTemplateChild("PrgBarSyncProgress");
UpdateProgressBarDelegate updatePbDelegate = new UpdateProgressBarDelegate(objProgressBar.SetValue);
Dispatcher.Invoke(updatePbDelegate, System.Windows.Threading.DispatcherPriority.Background, new object[] { ProgressBar.TagProperty, "Synchronizing " + e.ProgressPercentage.ToString() + "%" });
}
不要忘记更改进度条“PrgBarSyncProgress”的名称。您需要在问题中添加更多的解释,可能还有更多的代码,以使问题更清楚。我希望您能更新进度百分比。对于进度条,您是否正在后台线程中更新?如果是,那么您需要使用dispatcher来更新主线程上的任何内容。请更具体地说,并包括一个可靠地再现您遇到的任何问题的好程序。假设
ProgressPercentage
值确实达到100
,那么这里显示的一点XAML似乎就是做您想要做的事情。所以这大概不会发生。但是如果没有更好的代码示例,就不可能识别出您所犯的任何错误。