微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WP7-C#-Silverlight-在页面之间传递XML数据

好吧,在观看和阅读教程一周之后,我仍然无法在页面之间传递xml数据.一开始我对C#的知识为零,我可以了解更多的知识.

如果您能指导我或者至少告诉我从哪里开始,我将不胜感激.好的,这是我想要做的,但我做不到

例如;我有这样的xml数据;

<document>
    <car id="01">
        <manufacturer>Ford</manufacturer>
        <model>Mustang</model>
        <year>1965</year>
        <details>The Ford Mustang of 1965 was first unveiled bla bla for example....</details>
    </car>
    <car id="02">
        <manufacturer>Chevrolet</manufacturer>
        <model>Nova</model>
        <year>1967</year>
        <details>The Chevrolet Nova of 1967 was bla bla for example....</details>
    </car>
    <car id="03">.....
</document>

我想在mainBox.xaml列表框内显示制造商和型号(可以)

TextBlock Text="{Binding manufacturer}"
TextBlock Text="{Binding model}"

当单击模型名称时,我想在另一页中显示模型的年份和详细信息(例如,details.xaml)

我可以使用下面的方法传递简单的文本,但是我无法传递绑定,因此它对我没有用.它只是列出所有汽车的详细信息和年份,而不是我在主页上选择的特定汽车.

this.NavigationService.Navigate(
new Uri("/details.xaml?......

先感谢您.对不起,打扰了.

解决方法:

与其在页面之间传递一长串XML数据,不如传递汽车的ID.由于您是将数据绑定到mainpage.xaml上的ListBox,所以我假设您具有与以下类似的类:

public Class Car {
  public string manufacturer;
  public string model;
  public unsigned int id;

  // ...
}

启动时读取XML文件,并创建一个绑定到ListBox的Car对象的ObservableCollection.然后,在ListBoxItem的Tap手势处理程序中,执行以下操作:

private void OnListBoxItemTapped( object sender, GestureEventArgs e )
{
  var car = sender.DataContext as Car;

  if( car != null ) {
    // Navigate to page that will display the car details
    NavigationService.Navigate(
          new Uri( String.Format( "/detailspage.xaml?id={0}",
            Uri.EscapeDataString( car.id ) ), UriKind.Relative ) );
  }
}

然后,在详细信息页面的OnNavigatedTo方法中,只需使用ID查找正确的汽车,然后将该对象绑定到页面的DataContext.

请注意,如果您的ID始终为数字,则不需要EscapeDataString.如果您确实希望按原样传递所有XML数据,则也可以通过将ID替换为XML字符串数据来实现.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐