我有一个WPF应用程序,它包含一个MainWindow,它也有一个常规按钮。 绑定到按钮单击事件,我通过打开文件对话框加载一个序列化对象:调用OpenFileDialog.ShowDialog()后UI没有得到更新()
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");
}
}
}
后,此方法被执行的用户界面不会再更新。当我什么也没说,我的意思是甚至没有窗口上的按钮悬停效果(更不用说通过后面的代码更新标签,属性更改事件,开始调用等),它就像它被冻结(但仍然响应点击)。
我认为这是我做的事我的程序里面,而只是减少了方法调用
private void LoadNetwork_Click(object sender, RoutedEventArgs e)
{
var openDialog = new OpenFileDialog { Multiselect = false };
var result = openDialog.ShowDialog();
}
具有相同的效果。
澄清。 - 这发生在模态对话框关闭后。 - 一旦UI因任何原因失去焦点(如最小化 - 恢复,切换到另一个窗口),它似乎也表现出来。 - 这似乎只发生在我的Windows 8.1机器上(放入一个xp虚拟机,我有,可以)。
任何想法?
你甚至可以看到OpenFileDialog框吗?屏幕如何冻结,但仍然响应点击?哪些“点击”工作? –
是的,对象被加载等等。冻结是一个糟糕的选择,'静态'实际上会更好。你知道,当你将鼠标悬停在一个按钮上时,它会在我调用该方法后改变其颜色等,该按钮不会对我的鼠标悬停进行反应。但是我仍然可以点击它,它仍然会执行绑定到点击事件的操作。 – LuBa
您是否说在文件对话框打开时无法与应用程序交互?是的,那么这是设计。 – MoonBoots89