1

我在窗口中更新值有问题,它是通过Show()方法而不是ShowDialog()方法打开的。我使用MVVM和使用绑定,例如:

Value="{Binding Path=MainProgressValue, UpdateSourceTrigger=PropertyChanged}"

在我的财产中,我INotifyPropertyChanged用于通知 UI。

它工作正常,但现在我打开新窗口

 window.DataContext = context;
 if (owner != null)
       window.Owner = owner;
 resultHandler = new ViewModelBaseClass.ResultHandler(context_RequestClosing);
 getDialogResultHandler = new ViewModelBaseClass.GetDialogResultHandler(context_GetDialogResultAction);
 context.RequestClosing += resultHandler;
 context.GetDialogResult += getDialogResultHandler;
 window.Show();

有进度条。显示窗口,主线程继续执行程序。但是当DataContextcall时RaisePropertyChanged,进度条不会更新。带有进度条的窗口是否可能使用主线程以外的另一个线程?

如何更新这个值?

4

1 回答 1

0

根据您的描述,我的猜测是您希望在主应用程序线程忙于做某事时刷新 UI。主应用程序线程是 UI 线程,因此如果是这种情况,您的 UI 线程将被阻塞。

您需要做的是移动正在执行加载等的“程序”部分并将进度值更新到工作线程(请参阅 ThreadPool)中,当您想要通知 UI 刷新时使用 Dispatcher.BeginInvolke()你找到的例子。这将在主 UI 线程上执行您的刷新代码。

于 2012-10-01T21:57:56.470 回答