我有一個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