1

我有多线程 WPF 应用程序。我的应用程序中有一个在后台运行的小进程,一旦完成,UI 将根据结果进行更新。

我已经实现了功能,并且运行良好。我只想为我的应用程序创建如下所示的动画处理图像,以便它会一直运行直到 UI 更新。我不太擅长 Expression blend 来创建这种动画。

http://www.google.com/imgres?imgurl=https://www.sunvalleywellness.org/img/animation_processing.gif&imgrefurl=http://www.sunvalleywellness.org/&h=200&w=200&sz=55&tbnid=d4OPzhVnCB_kNM: &tbnh=90&tbnw=90&zoom=1&usg=__KPnWRjNlWm-AuZg0lavRE5lzMcA=&docid=JZavNcJukA3ZwM&sa=X&ei=SlenUcG-DIjtqwGMqYHAAQ&ved=0CDMQ9QEwAg&dur=733

你能帮我创造它吗?我

谢谢

4

1 回答 1

0

您必须使用 View Model 或 DataContext 中的 bool 属性来执行此操作。此属性应指示是否在后台工作,例如:IsWorking. 当您开始作业时将此属性设置为 true,当您完成作业时,将其设置为 false。请参阅 DataContext 类的示例代码:

var currentSyncContext = SynchronizationContext.Current;
var backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += (_,__) =>
                      {
                          currentSyncContext.Send((t)=>{IsWorking = true;},null);     //this is for change the visual tree from another thread
                          //Here write the job you want to do...
                          currentSyncContext.Send((t)=>{IsWorking = false;},null);    //this is for change the visual tree from another thread
                      };
backgroundWorker.RunWorkerAsync();

然后在您的 XAML 代码中,您需要使用 BooleanToVisibilityConverter 将图像或控件的可见性绑定到此属性。

我认为这是执行此操作的经典方法。希望对你有用...

于 2013-05-31T18:48:52.820 回答