2010-02-17 94 views
7

這似乎是一個簡單的解決方案,但我浪費太多時間來解決這個問題。也許我錯誤地設計了我的應用程序(可能是這種情況),所以如果您有更好的解決方案,請幫助我。防止WPF框架在堆棧中存儲歷史記錄

我正在設計一個企業級別的WPF應用程序,它看起來很像Outlook,而Ribbon而不是工具欄。當用戶點擊RibbonButton時,我有很多不同的模塊加載到框架中。請記住,他的功能區是跨所有模塊共享的。

所以我有一個功能區和框架的外殼。當用戶單擊功能區按鈕時,它會將適當的模塊(用戶控件)加載到框架中。一切都很好。但是,如果我導航到另一個模塊(通過單擊另一個RibbonButton),然後單擊原始RibbonButton,我現在有兩個相同模塊的實例打開...但只有一個顯示在框架中...其他模塊在框架的堆棧中。

所以我的問題是,當我導航到不同的模塊時,如何告訴框架關閉usercontrol?我試過設置JournalEntry.KeepAlive="False",但那仍然無效。有什麼想法嗎?實際上沒有太多的代碼可以發佈,但如果它能幫助你,我可以這樣做。

回答

9

如果您從不打算返回前一個條目,則可以使用NavigationService.RemoveBackEntry()在每次瀏覽時清除歷史記錄。要做到這一點最簡單的方法是處理框架的Navigated event

frame.Navigated += frame_Navigated; 

void frame_Navigated(object sender, NavigationEventArgs e) 
{ 
    frame.NavigationService.RemoveBackEntry(); 
} 
+0

如果我只需要一個單一的導航辦呢? – 2014-06-17 16:29:30