2012-01-02 49 views
0

我有一個列表框從XML源和數據綁定填充給我的價值,我已經設置這個導航到相對Uri的選擇。無法從該項目返回後導航到列表框項目

我的問題是,當我使用後面的硬件按鈕,我不能選擇我以前選擇的項目。如果我硬編碼後退按鈕導航,但我確定有一個更好的方法可以解決這個問題,所以我玩了一段時間,並開始工作。

代碼可以在下面找到,任何幫助將不勝感激。

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,但在我的一個Silverlight應用程序中,我所做的是創建一個靜態類,它的工作方式類似於使用靜態字典的SessionManager。並從該視圖瀏覽我的視圖模型存儲到我的會話..當我使用後退按鈕回來我認爲我嘗試從我的會話中獲取視圖模型,並再次將其設置爲DataContext的...

 public Page1() 
    { 
     InitializeComponent(); 

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

這裏SessionManager將是一個靜態類包含Dictionary來保存對象。

希望這可能是一個很好的指針。

問候。

+0

謝謝,但我不確定這將如何實施。僅供參考我正在創建一個Windows Phone應用程序,因此甚至可以使用它? 我認爲這只是使用GoBack方法(從硬件按鈕)重新加載頁面的問題。 讓我知道你的想法,以及我可以去研究這個問題的任何地方。感謝您的及時回覆! 乾杯, Carl – 2012-01-02 10:31:19