【问题标题】:how to set values passing one page to another page?如何设置将一页传递到另一页的值?
【发布时间】:2013-03-28 06:40:19
【问题描述】:

您好,我正在使用 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 is null.so 任何人都可以帮助我吗?

【问题讨论】:

  • 列表框的itemsource是什么? selectedItemData 为 null,因为转换为 Notch 可能不起作用。
  • 在函数的第一行放置一个断点,并在不带引号的情况下输入即时窗口“(sender as ListBox).SelectedItem”。如果它不为null,那么你可以看到它是什么样的项目。

标签: c# listbox windows-phone


【解决方案1】:

不要试图从发送者对象中拉取。如果实际上代码认为某个项目被真正选中并且不是空的,则只需直接从列表对象中提取您需要的内容。

您只需将您的 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

【讨论】:

  • 嗨,我改变了这个东西,但我的输出没有改变。
  • 您的应用程序中其他地方的某些代码可能存在问题,您没有显示给我们看。如果您分享更多代码和数据,我们或许能够找出您问题的全部范围。
  • 嗨,如果你想要我的所有代码,请查看此链接并帮助我。我想你可以帮助我。[stackoverflow.com/questions/15544201/…
  • 嗨@Rob.Kachmar 你看到我的代码了吗?你有解决这个问题的想法吗?我正在等待你的重播。
【解决方案2】:

一个。

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

备注:在Test页面可以使用(Notch)DataContext来引用Class的实例,这样就可以使用Image数据作为((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;

备注:Notch 是你作为 ItemSource 绑定到 ListBox 的类

最好的问候 温泉

【讨论】:

  • 您好,感谢重播。我希望你的回答。但是我怎样才能获得选定的价值并在相关文章上显示到详细信息页面?可以帮助我吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
相关资源
最近更新 更多