2017-01-18 33 views
0

我認爲在PageHeader(使用Template 10框架)中使用ShellBackButton是一件很酷的事情,但Back導航不會更新頁面。頁面框架更改,但頁面顯示空白。模板10中的ShellBackButton和ShellBackButtonUpdated事件是什麼?

是因爲ShellBackButton沒有鏈接到導航系統,如果是的話,你如何獲得ShellBackButton(和ShellBackButtonUpdated)的工作?

鑑於頁XAML(佈線到視圖模型頁)[WITH基於COMMENT MORE INFO UPDATE]:

<Page.DataContext> 
    <vm:DetailPageViewModel x:Name="ViewModel" /> 
</Page.DataContext> 

鑑於頁代碼隱藏:返回按鈕打重寫Windows.UI.Xaml.Navigation事件

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    // BackButton hits this event as well as OnNavigatingFrom(NavigatingCancelEventArgs e) 
    // and OnNavigatedFrom(NavigationEventArgs e) 
} 

在視圖模型頁(繼承Template10.Mvvm.ViewModelBase):

public class DetailPageViewModel : Template10.Mvvm.ViewModelBase 
{ 
    // Navigation now takes place via overridden methods in 
    // Template10.Services.NavigationService.INavigable 
} 

這就提出了一個更具體的子問題,我原來有更清楚:

你怎麼能做出ShellBackButton,目前在命中鑑於Windows.UI.Xaml.Navigation導航事件頁面,INSTEAD命中Template10.Services.NavigationService.INavigable view-model中的導航事件?如果這可以完成(我不知道怎麼做),那麼問題就解決了。

+0

不是爲了更新您的頁面而僅僅是一個導航工具,更新您的頁面取決於您作爲開發人員。 – mvermef

+0

tnxs用於回覆。該按鈕按預期工作,然後將頁面更改爲viewmodel。這是否意味着它可以與視圖一起使用,但不是視圖模型? – user2921851

+0

你是如何觀看模型的,並且它們的基礎繼承是什麼?你如何告訴關於視圖模型的頁面?只需用這些問題的答案更新您現有的問題。 – mvermef

回答

0

好的,所以擺脫了在頁面後面的代碼重寫它沒有地方在那裏。幾乎所有的Pages在代碼隱藏方面幾乎都是空白的,除了構造函數。

這並不意味着查看相關的東西不能放在這裏,因爲HamburgerMenuShellPage在代碼隱藏方面有很多工作,但它專門用於這個。

接下來將覆蓋放入viewmodel中,問題應該解決。由於該頁面的Datacontext現在是您定義的視圖模型,因此您會混淆該服務。或者至少它不知道覆蓋是存在的,因爲viewmodel實際上並沒有爲它設置。

Template10.MVVM.ViewModelBase已經INavigable繼承的,所以現在你將有至少2個覆蓋總共1 OnNavigateToAsyncOnNavigateFromAsync,請記住,在前來版本的異步口味可能會自行消失。

我假設你從圖庫中安裝了Template10 vsix,它也應該安裝ViewModels的模板以及代碼片段。

HTH,

Morgan。

+0

謝謝@mvermef。除初始化外,我的查看頁面代碼隱藏是空白的。我展示了Windows.UI.Xaml.Navigation覆蓋以說明這一點。我跟着你,我的觀點頁面和視圖模型就像你說的那樣。問題是ShellBackButton點擊雖然頁面發生變化並觸及構造器,但卻沒有點擊viewmodel的導航處理程序(ShellBackButton由包含ShellBackButton的PageHeader視圖頁框架對象驅動,並綁定到框架)。在瀏覽頁面中一切都很完美,但viewmodel navs似乎並不知道ShellBackButton。模板10開發人員可能會忽略它嗎? – user2921851

+0

你使用T10的模板是什麼?漢堡包,最小,空白? – mvermef

+0

我正在使用漢堡項目的一個版本。我想我剛纔發現了這個問題。 Intellisense建議我將NavigationService.Frame更改爲NavigationService.FrameFacade,並且我服從了,這就是問題如何開始(我認爲)。我會檢查一切併發布出現的內容。我認爲這是ShellBackButton開始在viewmodel中工作的問題,就像查看頁面一樣。 – user2921851