2012-01-02 14 views
0

XMLソースからデータを取り込んで値を返すListBoxがあります。これを選択すると相対Uriにナビゲートします。ListBoxアイテムを返すとそのアイテムに戻ることができません

私の問題は、私が前に選択したアイテムを選択できないバックハードウェアボタンを使用することです。私は周りに遊んで、私はバックボタンのナビゲーションをハードコードすればそれを働かせましたが、私はこれを解決するためのきれいな方法があると確信しています。

コードは次のとおりです。ご了承ください。

XAML:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
    <ListBox x:Name="ABCitems" SelectionChanged="ABC_SelectionChanged"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Margin="0,0,0,0" Width="432" Height="100"> 
        <TextBlock Text="{Binding name}" 
           Margin="62,0,0,0" 
           TextWrapping="Wrap" 
           Style="{StaticResource PhoneTextExtraLargeStyle}" 
           Foreground="Black" /> 
        <Image Height="50" 
          Width="50" Margin="0,-50,0,0" 
          HorizontalAlignment="Left" 
          VerticalAlignment="Center" 
          Source="{Binding image}" /> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
</Grid> 

XAML.CS

private void ABCitems_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (ABCitems.SelectedItem != null) 
    { 
     Menu m = ABCitems.SelectedItem as Menu; 

     if (m.extUri.IsAbsoluteUri == true) 
     { 
      string link = m.extUri.ToString(); 

      NavigationService.Navigate(
       new Uri("/Web.xaml?link=" + link, UriKind.Relative)); 
     } 

     else 
     { 
      NavigationService.Navigate(m.extUri); 
     } 
    } 
} 

答えて

0

あなたは、WPFのMVVMパターンを使用している場合、私はわからない..しかし、あなたは、ナビゲーション私は考えている間ビューに値を保持したい場合あなたはMVVMのパターンを使用して開始する必要があります..私はWPFでこれを試していないが、私は何をしている私の銀色のアプリの静的な辞書を使用してSessionManagerのように動作する静的クラスを作成することです。そして...私は...私のセッションへのViewModelを保存し、私は戻るボタンを使用して、私のビューに戻ってくるときに私は試してみて、私のセッションからのViewModelを取得して、再度のDataContextとして設定ビューから

 public Page1() 
    { 
     InitializeComponent(); 

     if (SessionManager.Exist("PageViewModel")) 
     { 
      this.DataContext = SessionManager.Get<Page1ViewModel>("PageViewModel"); 
     } 
     else 
      this.DataContext = new PageViewModel(); 
    } 
を航行上

ここにSessionManagerは、オブジェクトを保持するための辞書を含む静的クラスになります。

これは良いポインタかもしれません。

よろしくお願いいたします。

+0

ありがとうございますが、これがどのように実装されるかわかりません。参考までに、Windows Phoneアプリケーションを作成していますので、これも使用できますか? GoBackメソッドが使用されているとき(ハードウェアボタンから)は、単にページを再読み込みすることであると考えました。 私はあなたの考えを知り、私はこれを研究するために行くことができる場所を教えてください。あなたの迅速な返事を感謝します! 乾杯、 カール –

関連する問題