2013-06-16 23 views
5

Tôi có một ứng dụng và khi RootFrame được khởi tạo lần đầu tiên, tôi sẽ kiểm tra xem đây có phải là lần đầu tiên ứng dụng được khởi chạy hay không. Nếu có, nó thay đổi RootFrame UriMapper thành một trang hướng dẫn. vấn đề là, tôi dường như không thể tìm ra cách để chuyển hướng người dùng quay lại MainPage.xaml. Nó sẽ không làm bất cứ điều gì cho đến nay.Trang chuyển hướng sau khi thay đổi UriMapper trong Windows Phone 8

Đây là mã Tôi đang sử dụng cho việc thay đổi khi bắt đầu ban đầu lên trang trong constructor App:

if (App.Model.SelectFirstStart()) 
{ 
    var mapper = new UriMapper(); 

    mapper.UriMappings.Add(new UriMapping 
    { 
     Uri = new Uri("/MainPage.xaml", UriKind.Relative), 
     MappedUri = new Uri("/TutorialPage.xaml", UriKind.Relative) 
     }); 

     RootFrame.UriMapper = mapper; 
    } 

Khi người dùng chạm một nút trong trang hướng dẫn, nó sẽ chuyển hướng họ đến các Mainpage. xaml. Đây là những gì tôi đã cố gắng cho đến nay:

NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)); 

Và:

App.RootFrame.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)); 

Bất kỳ trợ giúp sẽ được nhiều đánh giá cao. Cảm ơn bạn

Trả lời

6

Tôi thấy một số vấn đề.

Trước tiên, bạn không thay đổi ánh xạ trong trang hướng dẫn của mình để về cơ bản, MainPage.xaml vẫn là bản đồ đến TutorialPage.xaml.

Vấn đề thứ hai thậm chí sau khi khắc phục điều đó, điều hướng đến MainPage.xaml sẽ vẫn không hoạt động vì mặc dù trang thực tế là TutorialPage.xaml, RootFrame.CurrentSource vẫn sẽ trỏ đến MainPage.xaml bất kể điều gì.

Để khắc phục điều này bạn cần phải làm như sau trong nút trang hướng dẫn của bạn nhấp

// Inside the Button click event of TutorialPage.xaml 
// Change the mapping so that MainPage points to itself 
((UriMapper)App.RootFrame.UriMapper).UriMappings[0].MappedUri = 
    new Uri("/MainPage.xaml", UriKind.Relative); 

// Since RootFrame.CurrentSource is still set to MainPage, you need to pass 
// some dummy query string to force the navigation 
App.RootFrame.Navigate(new Uri("/MainPage.xaml?dummy=1", UriKind.Relative)); 

// Remove back entry so that if user taps the back button 
// you won't get back to tutorial 
App.RootFrame.RemoveBackEntry(); 
+0

Đó cố định nó, cảm ơn bạn rất nhiều. Tôi đã thử remapping nó trước nhưng không nhận ra tôi đã phải loại bỏ các mục trở lại. Cảm ơn một lần nữa! – user1186173

Các vấn đề liên quan