2012-04-20 3 views
-1

Предположим, у меня есть четыре страницы в моем приложении. Предположим, что это Acs.xaml, MainPage.xaml, Home.xaml и Weather.xaml. (Поскольку я использую службу контроля доступа (ACS) для выполнения функций аутентификации).Windows Phone 7 Looped Navigation

Теперь после аутентификации ACS перенаправляет меня на MainPage.xml и MainPage.xaml на нем есть две кнопки, одна из которых приводит пользователя к Домой, а другая - к Погода.

Теперь, когда я нахожусь дома, я хочу еще одну кнопку, чтобы взять их в погоду. Точно так же, когда я нахожусь в погоде, я хочу, чтобы кнопка забирала их домой. (В обоих файлах Home.xaml и Weather.xaml I'am Использование графиков, графики с использованием инструментария визуализации данных [Silverlight]

I 'Gone Через Windowsteamblog (круговая навигация), но ничего не работает отлично ... Когда я добираюсь до MainPage.xaml и нажимаю на любую из кнопок, я получаю ошибку, что-то вроде нарушения навигации, я также пробовал панораму, но не смог решить проблему.

LoginPageCode: -

namespace PhoneApp1.Pages 
{ 
using System; 
using System.Windows; 
using System.Windows.Navigation; 
using Microsoft.Phone.Controls; 
using Microsoft.WindowsAzure.Samples.Phone.Identity.AccessControl 



public partial class LoginPage : PhoneApplicationPage 
{ 
    private readonly SimpleWebTokenStore swtStore = Application.Current.Resources["swtStore"] as SimpleWebTokenStore; 

    public LoginPage() 
    { 
     this.InitializeComponent(); 


     this.PageTransitionReset.Begin(); 
     this.SignInControl.RequestSimpleWebTokenResponseCompleted += 
      (s, e) => 
      { 
       // The ACS token was successfully received and stored in the "swtStore" application resource. 
       // TODO: Navigate to your main page i.e.: 
       this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)); 
      }; 
    } 

    protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     if ((e.NavigationMode == NavigationMode.New) && this.swtStore.IsValid()) 
     { 
      // There is a valid ACS token already in the "swtStore" application resource. 
      // TODO: Navigate to your main page i.e.: 
      this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)); 
     } 
     else 
     { 
      // There is not a valid ACS token in the "swtStore" application resource. 
      // The token may be expired or it is the first time the user logs in. 
      this.PageTransitionIn.Begin(); 
      this.SignInControl.GetSimpleWebToken(); 
     } 
    } 

    protected override void OnNavigatedFrom(NavigationEventArgs e) 
    { 
     this.PageTransitionReset.Begin(); 
    } 
} 

} `

MainPage Код:

using System; 
using System.Collections.Generic; 

using System.Linq; 
using System.Net; 
using System.Windows; 

using System.Windows.Controls; 
using System.Windows.Documents; 
using System.Windows.Media; 
using System.Windows.Media.Animation; 
using System.Windows.Shapes; 
using Microsoft.Phone.Controls; 


using System.Windows.Controls.DataVisualization.Charting; 

namespace Chart 
{ 

public partial class MainPage : PhoneApplicationPage 
{ 


// Constructor 
     public MainPage() 
     { 




InitializeComponent(); 

    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     this.NavigationService.Navigate(new System.Uri(@"/Home.xaml", UriKind.RelativeOrAbsolute)); 
    } 

    private void button2_Click(object sender, RoutedEventArgs e) 
    { 
     this.NavigationService.Navigate(new System.Uri(@"/Weather.xaml", UriKind.RelativeOrAbsolute)); 
    } 
} 
}` 
+0

Есть ли вопрос? – scottheckel

+0

@Ashutosh Чтобы люди не закрывали вопрос на вас, я изложил это в меру своих возможностей. Если я пропустил ваш смысл, мне очень жаль, и я продолжу и отредактирую его снова. –

ответ

2

Если я вас правильно понимаю, это звучит, как вы бы лучше использовать Panorama control позволяя чтобы циклически переключаться через экраны, вместо того, чтобы нажимать кнопки, чтобы перейти от одного к другому.

Если вы абсолютно мертвы на кнопках, то при нажатии используйте NavigationService для перехода на другую страницу.

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

Чтобы вернуться назад, они интуитивно нажать кнопку Назад на устройстве, но опять же, если вы решительно настроены на предоставление пользовательской кнопки, вы можете программно перемещаться в обратном направлении.

NavigationService.GoBack(); 
1

Это звучит, как вы описываете нелинейные навигации цикла - то, что Microsoft понял, может подойти, после выхода из исходного SDK, и выпустили рецепт для него. Вы можете найти сообщение в блоге Solving Circular Navigation in Windows Phone Silverlight Applications в блоге группы Windows Phone. Он связывает до Recipe: Non-Linear Navigation Service for Windows Phone 7, где есть пример кода для скачивания.