【问题标题】:Setting visibility and activity of a component in a callback在回调中设置组件的可见性和活动
【发布时间】:2015-07-18 09:34:14
【问题描述】:

我有一个 WPF 程序,它带有一个在异步方法之后执行的回调。

回调如下所示:

public void ProcessCompleteCallback()
{
    MessageBox.Show("Process completed.");
    GenerateOutputButton.IsEnabled = true;
    LoadingGifImage.Visibility = Visibility.Hidden;
    CommandManager.InvalidateRequerySuggested();
}

第一行被执行,但第二行和第三行的 GUI 没有变化。 我试图通过调用 CommandManager 来强制重新查询,但它没有帮助。

知道为什么它不起作用吗?

【问题讨论】:

  • 您需要粘贴 XAML 代码
  • CommandManager.InvalidateRequerySuggested() 仅在从 UI 线程调用时有效。你确定代码在那个线程上运行吗?

标签: c# wpf callback


【解决方案1】:

试试这个:

public void ProcessCompleteCallback()
{
    MessageBox.Show("Process completed.");
    Application.Current.Dispatcher.Invoke(() => 
    {
        GenerateOutputButton.IsEnabled = true;
        LoadingGifImage.Visibility = Visibility.Hidden;
        CommandManager.InvalidateRequerySuggested();
    });
}

【讨论】:

  • 您只能从 Dispatcher Thread 或 UI Thread 更新 UI 组件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-28
  • 1970-01-01
  • 1970-01-01
  • 2014-08-21
  • 1970-01-01
相关资源
最近更新 更多