如何将WPFtoolkit busyindicator用于WPF应用程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将WPFtoolkit busyindicator用于WPF应用程序相关的知识,希望对你有一定的参考价值。
我在WPF中创建了一个应用程序,我正在进行长时间的转换过程。所以我想放进度栏窗口,所以我使用了来自wpftoolkit dll的BusyIndicator进度条并试图显示我的转换何时开始。但当我点击转换按钮时,它显示异常 - “调用线程无法访问此对象,因为另一个线程拥有它”...
我的代码 -
private void ConvertBtn_OnClick(object sender, RoutedEventArgs e)
{
Task.Factory.StartNew(() =>
{
ConversionToExcel();//My conversion methode
for (int i = 0; i < 10; i++)
{
Dispatcher.Invoke(DispatcherPriority.Normal, new Action(
() => { ProgressIndicator.BusyContent = string.Format("Inprogress, please wait..."); }
));
Thread.Sleep(1000);
}
}).ContinueWith((task) => { ProgressIndicator.IsBusy = false; }, TaskScheduler.FromCurrentSynchronizationContext()
);
}
答案
在开始新线程之前设置IsBusy=true
。
private void ConvertBtn_OnClick(object sender, RoutedEventArgs e)
{
ProgressIndicator.BusyContent = string.Format("Inprogress, please wait...");
Task.Factory.StartNew(() =>
{
ConversionToExcel();//My conversion method
}).ContinueWith((task) => { ProgressIndicator.IsBusy = false; }, TaskScheduler.FromCurrentSynchronizationContext()
);
}
此外,我认为您应该拥有自己的IsBusy属性并将其绑定到XAML中的ProgressIndicator.IsBusy。
以上是关于如何将WPFtoolkit busyindicator用于WPF应用程序的主要内容,如果未能解决你的问题,请参考以下文章
WPFToolkit DataGrid:组合框列不会立即更新 selectedvaluebinding