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?......
提前谢谢你。对不起,打扰你了。
我只传递汽车的ID,而不是在页面之间传递一长串XML数据。因为你的数据绑定到主页上的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字符串数据来实现这一点。
您只能在导航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/