从全景项绑定数据

本文关键字:数据 绑定 全景 | 更新日期: 2023-09-27 18:17:10

我的情况是这样的…

我有一个全景从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方法导航时。我不知道如何获取属性,这些属性是导航页面的标题或新闻类型。例如,我想为我的导航获取typeofcontenttextblock或{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。但是我不能发送NewsPanorama的header。SelectedItem到该页。因为我需要一些属性从PanoramaItem检索另一个JSON从web服务。

你能给我一些建议吗?

谢谢。

从全景项绑定数据

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

var selectedItem = Items[NewsPanorama.SelectedIndex];

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

var selectedItem = (NewsPanorama.SelectedItem as PanoramaItem).DataContext as SomeItem;