查找在HubSection GridView DataTemplate中选择的内容

时间:2013-09-09 23:25:24

标签: c# windows-8 windows-runtime winrt-xaml windows-8.1

我有以下代码构成HubSection内的Hub

            <HubSection DataContext="{Binding Path=[0], Source={StaticResource groupedItemsViewSource}}" Padding="40,30,40,0">
            <HubSection.Background>
                <ImageBrush ImageSource="Images/BG.jpg" Stretch="UniformToFill" />
            </HubSection.Background>
            <HubSection.Header>
                <TextBlock x:Uid="Section1Header" TextLineBounds="TrimToBaseline" OpticalMarginAlignment="TrimSideBearings" Text="English"/>
            </HubSection.Header>
            <DataTemplate>
                <GridView
                    x:Name="itemGridView1"
                    Margin="-4,-4,0,0"
                    AutomationProperties.AutomationId="ItemGridView"
                    AutomationProperties.Name="Items In Group"
                    ItemsSource="{Binding Items}"
                    ItemTemplate="{StaticResource Standard240x320ItemTemplate}"
                    SelectionMode="Single"
                    IsSwipeEnabled="false"
                    IsItemClickEnabled="True"
                    ItemClick="ItemView_ItemClick">
                </GridView>
            </DataTemplate>
        </HubSection>

我也设置了AppBar,但我不知道如何告诉AppBar在HubSection中选择了什么。

请告知。

编辑:为了澄清,我面临着实施itemGridView1.selectedItem等代码的问题,因为我被告知它“在当前上下文中不存在”。

1 个答案:

答案 0 :(得分:2)

关于此问题的大多数建议都集中在迭代框架的可视化树,但这似乎在XAML Hub部分中不能很好地工作。

相反,在GridView中实现SelectionChanged事件。当触发此操作时,它将发送GridView发送方的详细信息,然后可以引用它以获取其他信息,例如.SelectedItem。

private void GridViewName_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var GridState = sender as GridView;
    if(GridState.SelectedItems.Count>0)
    {
        // Do something
    }
}