调用OpenFileDialog.ShowDialog()后UI未更新

时间:2014-01-25 20:42:42

标签: c# wpf

我有一个WPF应用程序,它包含一个MainWindow,里面还有一个常规按钮。 绑定到按钮单击事件我通过OpenFileDialog加载序列化对象:

private void LoadNetwork_Click(object sender, RoutedEventArgs e)
{
    var openDialog = new OpenFileDialog { Multiselect = false };
    var result = openDialog.ShowDialog();
    if (result)
    {
        string file = openDialog.FileName;
        try
        {
             _network= new SimplifiedNetwork(file, 1);
             MessageBox.Show("Loaded OK");
        }
        catch (Exception)
        {
             MessageBox.Show("Load error");
        }
    }
}

执行此方法后,UI不再更新。当我什么都不说时,我的意思是甚至没有窗口上的按钮悬停效果工作(更不用说通过代码更新标签,属性更改事件,开始调用等),它就像它被冻结(但仍然响应点击)。

我认为这是我在例程中所做的事情,但只是将方法调用减少到

private void LoadNetwork_Click(object sender, RoutedEventArgs e)
{
    var openDialog = new OpenFileDialog { Multiselect = false };
    var result = openDialog.ShowDialog();  
}

有相同的结果。

澄清。 - 这在模态对话框关闭后发生。 - 一旦UI因任何原因失去焦点(如最小化 - 恢复,切换到另一个窗口),它似乎也会出现。 - 这似乎只发生在我的Windows 8.1机器上(放在我周围的xp VM中,没问题)。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

OpenFileDialog是一个模态对话框,打算在对话框打开时后台窗口没有响应。

Here是更多信息,也是解决问题的可能方法。