0

这是我的情况...

我有一个从 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>

但是当我想在我的全景图上使用 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。

你能给我一些建议吗?

谢谢你。

4

1 回答 1

0

如果您知道选定的索引,则可以直接从您用于绑定的 Items 集合中获取该项目:

var selectedItem = Items[NewsPanorama.SelectedIndex];

另一种方法是获取所选项目的 DataContext 并将其转换,如下所示:

var selectedItem = (NewsPanorama.SelectedItem as PanoramaItem).DataContext as SomeItem;
于 2013-06-06T17:46:36.040 回答