这是我的情况......
我有一个Panorama从Web服务获取JSON数据。 它包含新闻,包括图像,标题,内容,发布日期和新闻类型。 现在我可以生成全景图来显示每个图片,标题和内容,下面是这些XAML代码。
<controls:Panorama x:Name="NewsPanorama" ItemsSource="{Binding Items}" Title="" HorizontalAlignment="Left" Height="750" VerticalAlignment="Top" Width="477" Margin="-2,0,0,0">
<controls:Panorama.ItemTemplate>
<DataTemplate>
<controls:PanoramaItem Orientation="Horizontal" Header="{Binding Type}">
<Grid Height="595" VerticalAlignment="Top" Margin="0,-21,0,0">
<Image x:Name="imgAds1" HorizontalAlignment="Left" Height="595" VerticalAlignment="Top" Width="417" Source="{Binding Image.Url}" Stretch="UniformToFill"/>
<Rectangle Fill="Black" HorizontalAlignment="Left" Height="106" Margin="0,489,0,0" VerticalAlignment="Top" Width="417" Opacity="0.44"/>
<TextBlock x:Name="Title" HorizontalAlignment="Left" Height="81" Margin="7,489,0,0" TextWrapping="Wrap" Text="{Binding Title}" VerticalAlignment="Top" Width="397" FontSize="40"/>
<TextBlock x:Name="Content" HorizontalAlignment="Left" Height="40" Margin="7,540,0,0" TextWrapping="Wrap" Text="{Binding Content}" VerticalAlignment="Top" Width="397" FontSize="15"/>
<TextBlock x:Name="TypeOfContent" HorizontalAlignment="Left" Height="40" Margin="7,590,0,0" TextWrapping="Wrap" Text="{Binding Type}" VerticalAlignment="Top" Width="397" FontSize="15" Visibility="Collapsed"/>
</Grid>
</controls:PanoramaItem>
</DataTemplate>
</controls:Panorama.ItemTemplate>
<controls:Panorama.HeaderTemplate>
<DataTemplate>
<TextBlock Visibility="Collapsed" />
</DataTemplate>
</controls:Panorama.HeaderTemplate>
</controls:Panorama>
但是当我想在Panorama上使用Tab方法导航时。我不知道如何获取属性,这些属性是导航页面的标题或新闻类型。 例如,我想为我的导航获取TypeOfContent TextBlock或{Binding Type},但我不知道该怎么做。
现在我在c#中的导航代码是这样的。
void NewsPanorama_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
int selectedIndex = NewsPanorama.SelectedIndex;
//I just try something that doesn't work here.
/*Panorama panoramactrl = (Panorama)sender;
PanoramaItem panoramaItem = (PanoramaItem)(panoramactrl.SelectedItem);*/
//String header = NewsPanorama.SelectedItem.Header.ToString();
NavigationService.Navigate(new Uri("/ViewContentDetail.xaml?itemId=" + selectedIndex , UriKind.Relative));
}
您可以看到我可以将selectedIndex发送到ViewContentDetail.xaml,但我无法将NewsPanorama.SelectedItem的标头发送到该页面。因为我需要PanoramaItem的一些属性来从Web服务中检索另一个JSON。
你能给我一些建议吗?
谢谢。
答案 0 :(得分:0)
如果您知道所选索引,则可以直接从用于绑定的Items集合中获取项目:
var selectedItem = Items[NewsPanorama.SelectedIndex];
其他方法是获取所选项目的DataContext并进行投射,如下所示:
var selectedItem = (NewsPanorama.SelectedItem as PanoramaItem).DataContext as SomeItem;