2011-09-27 124 views
3

我正在開發一個Prism應用程序,我需要在新窗口中發佈視圖模型。爲了實現這一目標,我創建了專門用於發佈這些視圖模型的服務。我這樣稱呼它:Window.Show()顯示新窗口,然後消失在主窗口後

windowService.Publish(myViewModel); 

而發佈方法的主體是這樣的:

public void Publish(FloatingViewModel viewModel) 
{ 
    var floatingWindow = ServiceLocator.Current.GetInstance<FloatingWindow>(); 

    floatingWindow.DataContext = viewModel; 
    floatingWindow.Show(); 
} 

的Show()方法執行後,新的窗口迅速顯示了我的主窗口上方和然後消失在我的主窗口後面,就好像它重新獲得了焦點。

有沒有人知道這種行爲可能來自哪裏?

+0

在調用windowService.Publish(myViewModel)的方法中,如果在該調用之後註釋掉所有行,它是否仍然消失? –

+0

我在WPF中的MessageBox有類似的問題。 –

回答

0

我終於找到了問題,它實際上比我想象的更深。 由於根本原因完全不同,此答案與所述問題無關

在窗口中發佈視圖模型的代碼實際上嵌套在WPF命令中,並且該命令通過InvokeCommandAction附加到MouseDoubleClick事件。我發現,即使當你將一個事件綁定到一個命令時,該事件也不會被標記爲已處理,因此會傳播,直到它被處理。這導致我的主要窗口收回焦點。

相關問題