2017-08-08 84 views
0

我使用Prism來處理UWP,並且我已將PrismUnityApplication中的應用程序基於類別。 我已經覆蓋OnLaunchApplicationAsync,我試圖打電話,NavigationService.Navigate在Prism中爲UWP調用時拋出異常

NavigationService.Navigate("HighlightsView", null); 

調用時,程序會拋出異常,

{"The page name HighlightsView does not have an associated type in namespace Panda.UWP.Views\r\nParameter name: pageToken"} 

我有一個文件夾命名視圖和我有一個命名視圖HighlightsView在名稱空間Panda.UWP.Views下。

在這裏有一個命名約定嗎?因爲如果我將我的視圖從重新命名亮點查看亮點頁面,那麼一切似乎工作得很好!

回答

2

是否有一個命名約定在這裏遵循?

簡短回答是肯定的。 Windows運行時的Prism指定一個ViewModelLocator對象,該對象可用於管理視圖模型及其與視圖關聯的實例化。這種方法的優點是有一個負責視圖模型實例化的類。

ViewModelLocator類使用附加屬性AutoWireViewModel將視圖模型與視圖關聯,只要此屬性設置爲True。有關會議的詳細信息,請參考Dave's Tech Blog

  • 查看模型是在同一程序的視圖類型。

  • 視圖位於.Views子名稱空間中。

  • 視圖名稱以「Page」結尾。

  • 查看模型位於.ViewModels子名稱空間中。

  • 視圖模型名稱與視圖名稱相對應,並以「ViewModel」結尾。

該博客還提供瞭如何覆蓋Prism的默認約定,您可以參考。 Brian's blog也描述了有關約定和如何改變它的類似事情。

+0

我想我遵循所有的約定,期待第三個,視圖名稱以「Page」結尾。就像我在我的問題中提到的那樣,我試圖重用UWP版本中的大部分經典應用程序代碼,並且由於wpf prism不包含與以「Page」結尾的視圖相關的任何約束,所以我點擊了一個塊。有沒有一種方法可以手動連線視圖和視圖模型? – sudarsanyes

+1

@sudarsanyes我認爲是的。你可以試試Brian的博客中的「改變那些討厭的約定」部分嗎? –

0

簡單的解決辦法是重命名HighlightsView.xaml是HighlightsViewPage.xaml

+1

是的,我意識到這一點,並在我的問題中解釋了......但這裏的約定是什麼? – sudarsanyes

相關問題