我曾经为了弄清楚为什么正常的Dispatcher.Invoke命令不能重新绘制我的窗口而苦恼不已,但现在问题似乎与内容被禁用有关。我正在使用Dotnet 4.0完整框架。
我看到光标发生了变化,但内容并没有被禁用。如果我添加:
如果我使用
private void DoSomething()
{
HandleBusyEnableDisable(false);
DoSomethingThatKeepsItBusy();
HandleBusyEnableDisable(true);
}
private void HandleBusyEnableDisable(bool enabling)
{
Cursor = enabling ? Cursors.Arrow : Cursors.Wait;
CanvasFunctions.IsEnabled = enabling;
CanvasRight.IsEnabled = enabling;
CanvasRight.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Render, EmptyDelegate);
我看到光标发生了变化,但内容并没有被禁用。如果我添加:
disabled="true"
,它会防止用户编辑该输入字段。CanvasRight.Opacity = enabling ? 1 : .5;
我认为它有时候有效,还有其他方法吗?
正在运行的任务是验证用户输入的数据,因此在GUI线程上运行要容易得多。这不应该很难。
<Trigger>
而不是<DataTrigger>
吧? - Amir Gonnen