2017-07-29 5 views
0

アプリの基礎としてプリズムUWPハンバーガーの例を使用する。 ViewModelは、Prism.Windows.Mvvm.ViewModelBaseを継承してPrism.Windows.Navigation.INavigationAwareから実装します。メインシェルでは、連絡先、about、settingsなどのボタンを持つタブを持つ分割ビューがあります。しかし、ユーザーが分割ビューから「約」のようなものを選択しても連絡先ページが表示され、保存されていないデータが汚れていると、保存していないデータを破棄するかどうかをユーザーに尋ね、保存していないデータを破棄したくない場合はナビゲーションイベントをキャンセルします。 UWPは、WPFで利用できるナビゲーション利便性インタフェースのいずれも持っていないようです。何か案は?UWPプリズムアプリ内のナビゲーションをキャンセルする

答えて

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メソッドがあります。第2に、コンテンツビューモデルでダイアログを削除してナビゲーションをキャンセルしても、ナビゲーションイベントを開始したメニュービューモデルでイベントが既に完了して実行されています。 – Locorobzilla

+0

これを処理する方法がわかりません。非同期メソッドを呼び出す(最適な方法ではないことがわかっています) – Depechie

+0

結果は詳細ページビューモデルでは機能しますが、ナビゲーションメニューはこれを無視して、モデル。ブライアン?誰でも?これはほぼ2週間続いています。すでにGithubで尋ねられましたが、閉鎖され、SOに戻ってきました。 – Locorobzilla

関連する問題