2017-07-29 54 views
0

使用Prism UWP Hamburger示例作爲應用程序的基礎。 ViewModel通過繼承Prism.Windows.Mvvm.ViewModelBase從Prism.Windows.Navigation.INavigationAware實現。在主外殼中是一個帶有按鈕的分割視圖,例如聯繫人,關於,設置等。但是,如果用戶從分割視圖中選擇了「約」,但顯示了聯繫人頁面並且有未保存的髒數據,我想詢問用戶是否希望丟棄任何未保存的數據,並且如果用戶不希望丟棄任何未保存的數據則取消導航事件。 UWP似乎沒有WPF中提供的任何導航便利界面。有任何想法嗎?在UWP Prism應用程序中取消導航

回答

0

自己還沒有測試過,但在示例中,似乎有一個測試用例試圖通過使用NavigatingFromEventArgs取消導航(導航離開頁面)並將屬性Cancel設置爲true!

public override void OnNavigatingFrom(NavigatingFromEventArgs e, Dictionary<string, object> viewModelState, bool suspending) 
    { 
     e.Cancel = _isNavigationDisabled; 

     base.OnNavigatingFrom(e, viewModelState, suspending); 
    } 

示例代碼這裏 https://github.com/PrismLibrary/Prism/blob/d2874b5b26baf2590a2b25f780a84f4789c33f4c/Sandbox/Windows10/HelloWorld/HelloWorld.Unity/ViewModels/MainPageViewModel.cs#L44

+0

是已經嘗試過這一點,2個問題。首先不能讓這個異步返回一個任務,因爲這會打破OnNavigatingFrom覆蓋,但是詢問用戶是否想丟失未保存的數據的對話框只有一個ShowAsync方法。其次,即使我刪除對話框並取消內容視圖模型中的導航,該事件已經在啓動導航事件的菜單視圖模型中運行到完成。 – Locorobzilla

+0

抱歉不知道如何處理,除.Result異步方法(知道這不是最佳方式) – Depechie

+0

結果在細節頁面視圖模型上工作,但導航菜單仍然忽略此並與細節不同步模型。布萊恩?任何人?這已經持續了近2周。已經在Github上被問到,但被關閉並被轉回到SO。 – Locorobzilla