【发布时间】:2014-01-25 20:42:42
【问题描述】:
我有一个 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();
}
有相同的结果。
澄清。 - 这发生在模态对话框关闭后。 - 一旦用户界面因任何原因失去焦点(如最小化 - 恢复,切换到另一个窗口),它似乎也会表现出来。 - 这似乎只发生在我的 Windows 8.1 机器上(放在我身边的 xp 虚拟机中,没问题)。
有什么想法吗?
【问题讨论】:
-
是的,对象被加载等等。冻结是一个糟糕的选择,“静态”实际上会更好。你知道,当你将鼠标悬停在一个按钮上时,它会改变它的颜色等。在我调用该方法之后,该按钮不会对我的鼠标光标悬停做出反应。但是我仍然可以点击它,它仍然会执行与点击事件绑定的动作。
-
您是说当文件对话框打开时您不能与您的应用程序交互?是这样,那么这是设计使然。
-
之后没有,交互是部分的(它响应命令,但没有视觉更新)