【发布时间】:2013-05-26 11:08:18
【问题描述】:
我有多线程 WPF 应用程序。我的应用程序中有一个在后台运行的小进程,一旦完成,UI 将更新结果。
我已经实现了功能,并且运行良好。我只想为我的应用程序创建如下所示的动画处理图像,以便它会一直运行直到 UI 更新。我不太擅长使用 Expression blend 来创建这种动画。
您能帮我创建它吗?我
谢谢
深
【问题讨论】:
我有多线程 WPF 应用程序。我的应用程序中有一个在后台运行的小进程,一旦完成,UI 将更新结果。
我已经实现了功能,并且运行良好。我只想为我的应用程序创建如下所示的动画处理图像,以便它会一直运行直到 UI 更新。我不太擅长使用 Expression blend 来创建这种动画。
您能帮我创建它吗?我
谢谢
深
【问题讨论】:
您必须在 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 将图像或控件的可见性绑定到此属性。
我认为这是执行此操作的经典方法。希望对你有用...
【讨论】: