0

我的应用程序执行 web 服务调用,当它发生时,IsExecuting 状态设置为 true 并且执行按钮被禁用。因为在此期间应用程序没有响应,所以我更改了进程,因此执行发生在单独的线程中。但是我现在注意到的问题是,执行按钮仍然被禁用,只有当我点击界面时,按钮才会启用。我怎样才能解决这个问题?

编辑:在代码隐藏中:

private void Execute()
{
    ThreadPool.QueueUserWorkItem(new WaitCallback(ExecuteThread));
}

private bool CanExecute
{
    get  { return !IsExecuting; }
}

private void ExecuteThread(Object o)
{
    IsExecuting = true;

    // Process execution here ...

    IsExecuting = false;
}


In Xaml:

<Button Content="Execute" Command="{Binding Path=ExecCommand}"/>
4

2 回答 2

2

所以你需要刷新CanExecute你的命令的状态?只需调用CommandManager.InvalidateRequerySuggested(),这将导致CanExecute在绑定命令上重新评估。

于 2011-07-29T13:20:36.103 回答
0

我认为您应该发布一些代码以更好地理解您的问题。

我很确定这是一个线程问题,因为您无法从不同的线程更改控件表单的状态。

我认为您需要做的就是使用 Delegate 从其他线程更新按钮的状态

如何从 C# 中的另一个线程更新 GUI?

于 2011-07-29T13:18:13.340 回答