好吧,经过一周的观看和阅读教程后,我仍然无法在页面之间传递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>
我想在列表框中显示制造商和模型mainpage.xaml(工作正常)
TextBlock Text="{Binding manufacturer}"
TextBlock Text="{Binding model}"
单击模型名称时,我想在另一页面中显示模型的年份和详细信息(例如,详情为.xp)
我能够通过下面的方法传递简单的文本,但我无法传递绑定,它对我没有用。它只列出了我在主页中选择的所有汽车的详细信息和年份。
this.NavigationService.Navigate(
new Uri("/details.xaml?......
提前谢谢你。对不起,如果我打扰你。
答案 0 :(得分:2)
不是在页面之间传递一长串XML数据,而是只传递汽车的ID。由于你是在mainpage.xaml上绑定到ListBox的数据,我假设你有一个类似于以下的类:
public Class Car {
public string manufacturer;
public string model;
public unsigned int id;
// ...
}
在启动时读取XML文件并创建绑定到ObservableCollection
的{{1}}个Car
个对象。然后,在ListBox
的{{1}}手势处理程序中执行以下操作:
Tap
然后,在详情页面ListBoxItem
方法中,只需使用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始终为数字,则无需id
。如果您确实想要按原样传递所有XML数据,那么您也可以通过将XML替换为XML字符串数据来实现。
答案 1 :(得分:1)
您只能在导航的网址中传递简单字符串,因此在您的情况下,您在详细信息导航中包含“?id = xx”。您的详细信息页面可以从您的数据中请求具有指定ID的汽车。
答案 2 :(得分:1)
为什么不解析xml ...并使用mvvm发送整个内容...
您将在详细信息页面中看到类似内容:
Messenger.Default.Register<YourClass>(this, "Display", s => SomeFucToDisplay(s));
您只需通过以下方式从主页发送:
Messenger.Default.Send(YourClass, "Display");
这是您可以找到更多http://www.galasoft.ch/mvvm/
的链接