2013-03-26 3 views
0

안녕하세요. xaml 페이지를 사용 중입니다. 선택한 항목으로 이동하고 싶습니다. 내가 다른 페이지로 이동하지 못할 어떤 한 항목을 선택하면 내가 오류 selectedItemData 얻었 기 때문에한 페이지를 다른 페이지로 전달하는 값을 설정하는 방법은 무엇입니까?

<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)); 
     } 
    } 

아래에 주어진 나를 도울 수있는 사람은 null.so입니다 ?

+0

목록 상자의 itemsource은 무엇입니까 Spaso 목록 상자에 ItemSource로 바인딩 클래스는 무엇입니까? Notch 로의 캐스팅이 작동하지 않았으므로 selectedItemData가 null입니다. –

+0

함수의 첫 번째 줄에 중단 점을 넣고 "직접 실행 창"(보낸 사람 : ListBox) .SelectedItem "을 따옴표없이 입력하십시오. null가 아닌 경우, 어떤 항목인지 알 수 있습니다. –

답변

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

안녕하세요, 제발 내 모든 코드를이 링크를 참조하십시오 me.i 나를 도와 줄 수있을 것 같아요. [http://stackoverflow.com/questions/15544201/how-to-set-page-navigation-from- listbox-to-another-page/15652950? noredirect = 1 # 15652950] – user123

0

A.

 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; 
     } 
    } 

비고 :

을 : 당신은 ((노치)의 DataContext) 이미지입니다

C. 또는,이 방법으로 이미지 데이터를 사용할 수 있도록 클래스의 인스턴스를 참조하는 (노치)의 DataContext를 사용하여 테스트 페이지에서

 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; 

비고 : 노치는

안부

+0

재생 해 주셔서 감사합니다. 나는 당신의 대답을 바란다. 그러나 어떻게 내가 선택된 가치를 얻을 수 있고, 상세한 기사에 관련 기사를 보여줄 수 있는가? 나를 도울 수 있는가? – user123

관련 문제