WP7 - silverlight -在页面之间传递XML数据

本文关键字:数据 之间 XML silverlight WP7 | 更新日期: 2023-09-27 17:50:19

嗯,在观看和阅读了一周的教程之后,我仍然无法在页面之间传递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>

我想在主页的列表框中显示制造商和型号。xaml(它工作正常)

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

当点击模型名称时,我想在另一页显示年份和模型的详细信息(详细信息)。(例如Xaml)

我可以通过下面的方法传递简单的文本,但我不能传递绑定,它不适合我。它只是列出了所有汽车的详细信息和年份,而不是我在主页中选择的特定汽车。

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

提前谢谢你。对不起,打扰你了。

WP7 - silverlight -在页面之间传递XML数据

我只传递汽车的ID,而不是在页面之间传递一长串XML数据。因为你的数据绑定到主页上的ListBox。我假设您有一个类似于以下的类:

public Class Car {
  public string manufacturer;
  public string model;
  public unsigned int id;
  // ...
}

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

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字符串数据来实现这一点。

您只能在导航URL中传递简单的字符串,所以在您的情况下,您包含一个"?Id =xx"。您的详细信息页面可以从您的数据中请求具有指定id的汽车。

你为什么不直接拆分xml…然后使用mvvm…

您将在详细信息页面中设置如下内容:

 Messenger.Default.Register<YourClass>(this, "Display", s => SomeFucToDisplay(s));

从主页发送,只需:

  Messenger.Default.Send(YourClass, "Display");

这是你可以找到更多的链接http://www.galasoft.ch/mvvm/