2013-03-26 4 views
0

Привет, это я использую страницу xaml, я хочу перемещаться с выбранным элементом.Как установить значения, переходящие одну страницу на другую страницу?

<ListBox x:Name="NotchsList11" Margin="0,0,0,0" Grid.Row="3" HorizontalAlignment="left" Width="Auto" Grid.RowSpan="2"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
     <StackPanel VerticalAlignment="Top" Width="Auto"> 
      <ListBox ItemsSource="{Binding Images}" Width="Auto" ScrollViewer.VerticalScrollBarVisibility="Disabled" SelectionChanged="NotchsList11_SelectionChanged"> 
       <ListBox.ItemsPanel> 
        <ItemsPanelTemplate> 
         <StackPanel Orientation="Horizontal" VerticalAlignment="Top"> 
         </StackPanel> 
        </ItemsPanelTemplate> 
       </ListBox.ItemsPanel> 
       <ListBox.ItemTemplate> 
       <DataTemplate> 
        <Image Source="{Binding}" Width="152" Height="90" Stretch="Fill" VerticalAlignment="Top"> 
        </Image> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
      </ListBox> 
     </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Моя страница xaml.cs код приведен ниже

private void NotchsList11_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     Notch selectedItemData = (sender as ListBox).SelectedItem as Notch; 
     if(selectedItemData != null) 
     { 
      NavigationService.Navigate(new Uri(string.Format("/Test.xaml?parameter={0}",selectedItemData.articleid), UriKind.Relative)); 
     } 
    } 

если я выбрать какой-то один элемент я не могу перемещаться на другую страницу, потому что я получил ошибку selectedItemData является null.so любой может мне помочь ?

+0

что ItemSource в ListBox? selectedItemData имеет значение null, потому что кастинг Notch, вероятно, не работает. –

+0

Поместите точку останова в первую строку функции и введите в окне «Немедленное окно» (отправитель как ListBox) .SelectedItem «без кавычек». Если это не пустое, то вы можете видеть, что это за предмет. –

ответ

0

Не пытайтесь вытащить из объекта отправителя. Просто вытащите то, что вам нужно непосредственно из объекта списка, если на самом деле код считает, что элемент действительно выбран, а не null.

Вам просто нужно изменить SelectionChanged способ выглядеть следующим образом:

private void NotchsList11_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (NotchsList11.SelectedItem != null) 
     { 
      NavigationService.Navigate(new Uri(string.Format("/Test.xaml?parameter={0}", 
       (NotchsList11.SelectedItem as Notch).articleid), UriKind.Relative)); 
     } 
    } 

Вот пример: http://code.msdn.microsoft.com/wpapps/Windows-Phone-8-JumpStart-1b7c34e3/sourcecode?fileId=72994&pathId=1694015380

+0

Привет, я изменил эту вещь, но никаких изменений в моем выходе. – user123

+0

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

+0

Привет, если вы хотите весь мой код, пожалуйста, посмотрите эту ссылку и помогите мне. Я думаю, что смогу мне помочь. [Http://stackoverflow.com/questions/15544201/how-to-set-page-navigation-from- listbox-to-another-page/15652950? noredirect = 1 # 15652950] – user123

0

А.

 private void NotchsList11_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     Notch selectedItemData = NotchsList11.SelectedItem as Notch; 
     if (selectedItemData != null) 
     { 
      NavigationService.Navigate(new Uri(string.Format("/Test.xaml?parameter={0}",selectedItemData.articleid), UriKind.Relative)); 
     } 
    } 

B. Или вы можете использовать весь SelectedItemData как контекст данных

private void NotchsList11_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     Notch selectedItemData = NotchsList11.SelectedItem as Notch; 
     if (selectedItemData != null) 
     { 
      NavigationService.Navigate(new Uri("/Test.xaml", UriKind.Relative)); 
      FrameworkElement root = Application.Current.RootVisual as FrameworkElement; 
      root.DataContext = selectedItemData; 
     } 
    } 

Примечание: В тестовой странице вы можете использовать (Notch) DataContext ссылаться на экземпляр класса, так что вы можете использовать данные изображения как ((Notch) DataContext) .Image

C. Или, таким образом:

 private void NotchsList11_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (e.AddedItems.Count > 0) 
     { 
      NavigationService.Navigate(new Uri(((Notch)e.AddedItems[0]).articleid, UriKind.Relative)); 

      ((ListBox)sender).SelectedIndex = -1; 

Примечания: Нотч класс, который вы Привязать как ItemSource к ListBox

с наилучшими пожеланиями СПАСО

+0

Привет, благодаря повторению. Я надеюсь, что ваш ответ. Но как я могу получить выбранное значение и показать на соответствующей статье на странице с подробной информацией? Может мне помочь? – user123

Смежные вопросы