【发布时间】:2013-01-14 11:31:36
【问题描述】:
我的 XAML 中有一个 please wait TextBlock,其 Visibility 属性绑定到我的 ViewModel 上的 IsBusy 属性(实现 INotifyPropertyChanged)。一个单独的按钮会启动一个长时间运行(2-3 秒)的进程,如下所示:
IsBusy = true;
try
{
// Do some long-running process
}
finally
{
IsBusy = false;
}
但是 please wait 消息永远不会出现。我假设操作在 UI 线程上运行,因此没有机会刷新?如果我在单独的线程上运行上述代码,它确实 工作,但我不希望用户在操作运行时做任何事情 - 我很高兴 UI freeze。
如何显示 please wait 消息?或者我会更好地在后台线程上运行它并(以某种方式)在持续时间内锁定 UI?我正在使用 .Net 4 顺便说一句。
【问题讨论】:
-
为什么不在后台线程中运行它,并将您的 Form/Window/UserControl/etc 的
IsEnabled绑定到IsBusy属性?然后当它变得忙碌时,整个窗口被禁用以防止用户修改它而不锁定您的应用程序? -
@Rachel 有时最简单的解决方案是最好的 - 谢谢!虽然现在遇到了另一个问题,但这是另一个 SO 问题的问题......
-
好的,我已将该评论扩展为您的答案:)
标签: c# wpf visibility inotifypropertychanged textblock