2016-02-17 68 views
0

假設我想通過多個頁面傳遞一個對象(引用)。我可以通過​​導航並傳遞參數。但是如何正確地將回參考點傳回來?UWP - 在頁面之間傳遞參數的正確方法

protected override void OnNavigatedTo(NavigationEventArgs e) { 
    if (e.Parameter is SomeClass) { 
     this.someObject = (SomeClass)e.Parameter; 
    } 
    else { 
     this.someObject = new SomeClass(); 
    } 

    SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible; 
    SystemNavigationManager.GetForCurrentView().BackRequested += OnHardwareButtonsBackPressed; 

    base.OnNavigatedTo(e); 
} 


private void OnHardwareButtonsBackPressed(object sender, BackRequestedEventArgs e) { 
    // This is the missing line! 
    Frame.Navigate(typeof(FirstPage), this.someObject); 
} 

但是當我按後退按鈕就可以追溯到FirstPageOnNavigatedTo不帶參數,然後回到SecondPageOnHardwareButtonsBackPressed,然後回到FirstPageOnNavigatedTo與填充參數。

你能否請教我一些更好的方法?

回答

3

在您的後臺處理程序中,請不要再向前導航,只需撥打GoBack - 如果您在全局級別而不是頁面級別處理該問題,通常會更輕鬆。

您可以在全局/靜態對象中存儲您的應用程序狀態(您希望在頁面導航中保留的事物),也可以直接修改從初始導航傳遞的對象(如果調用頁面仍有引用,它將能夠看到更改)。

我會考慮搜索「MVVM Windows應用程序」並查看一些結果以瞭解構建XAML應用程序的常見方法。