2017-02-11 12 views
1

私はUWPアプリケーションを開発しています。私はバックルートフレームのナビゲーションに問題があります。メインページにはフレームがあり、すべてのページをこのフレームに移動します。 dashboard.xaml、orders.xaml ....など、私のorders.xaml私は別のフレームを持っています...そのフレームで、私は3つのフォーム(キャンセルボタンがあるxamlページ)をナビゲートします。私は私の注文ページに戻る必要があります...私はそれに私のOrders.xamlをナビゲートするメインページのフレームを取得することに問題に直面している、助けてください。事前に感謝子ページフレームからメインページフレームへのUWPナビゲーション

+1

デザインを再考する必要があります。 3つのレベルのナビゲーションは、ユーザーフレンドリーのために複雑すぎます。ユーザーコントロールを交換してみてください。 – Bart

答えて

0

あなたが望むものを達成するために、複数の方法があります。たとえば、Frameを公開するpublic staticプロパティをMainpageに定義できます。

public sealed partial class MainPage : Page 
{ 
    public static Frame MainPageFrame; 

    public MainPage() 
    { 
     this.InitializeComponent(); 
     //Frame1 is the name of the Frame in XAML 
     MainPageFrame = Frame1; 
    } 

    ... 
} 

そして注文詳細ページでは、ナビゲートするために、このプロパティを使用します。

MainPage.MainPageFrame?.Navigate(typeof(Orders)); 

それとも、VisualTreeHelperを活用するなど、親Frameすなわち「FRAME1」を得ることができます。

//this.Frame gets the Frame holds the order details page (i.e "Frame2") 
FindParent<Frame>(this.Frame)?.Navigate(typeof(Orders)); 

がここFindParent方法は、ヘルプ方法では、次のようにVisualTreeHelper.GetParentの方法を使用しています

public static T FindParent<T>(DependencyObject dependencyObject) where T : DependencyObject 
{ 
    var parentObject = VisualTreeHelper.GetParent(dependencyObject); 

    if (parentObject == null) return null; 

    var parent = parentObject as T; 
    return parent ?? FindParent<T>(parentObject); 
} 
+0

Jayさんにありがとうございました...その動作VIsualTreeHelperメソッドを使用する – Murali

1

これはそれを行う必要があります。

Frame.Navigate(typeof(orders)); 
+0

あなたの答えをありがとうが、上記を試してみると、注文ページを間違ったフレーム(メインページフレームではない)に移動します。メインページ→フレーム1→注文書xaml→createOrder(ボタン)→クリック→xamlページ(4タブとFrame2)→各タブページ(フォーム)をナビゲートして注文を受け取りますユーザーからの詳細、各フォームにはキャンセルがあります。キャンセルをクリックしてください。注文ページ(Mainpage.xaml Frame1)に移動する必要があります – Murali

関連する問題