从全景项绑定数据
本文关键字:数据 绑定 全景 | 更新日期: 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;