Win 8 App 从数据模板列表视图中获取文本

Win 8 App Get text from datatemplate listview

我正在尝试学习如何在我的 win 8 应用程序的列表视图中制作数据模板

我的 Xaml 代码中有以下代码

<!-- Vertical scrolling item list -->
    <ListView x:Name="itemListView"
      Margin="0,4.714,10,0.429"
      ItemsSource="{Binding Source={StaticResource itemsViewSource}}"
      SelectionChanged="itemListView_SelectionChanged" Loaded="itemListView_Loaded" Grid.Row="4" Tapped="itemListView_Tapped_1">

        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid Height="110" Margin="6">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Width="110" Height="110">
                        <Image Source="{Binding Image}" Stretch="UniformToFill"/>
                    </Border>
                    <StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="10,0,0,0">
                        <TextBlock Text="{Binding Title}"  TextWrapping="NoWrap" FontFamily="Global User Interface"/>
                        <TextBlock Text="{Binding Subtitle}"  TextWrapping="NoWrap"/>
                        <TextBlock Text="{Binding Description}"  MaxHeight="60" FontFamily="Global User Interface"/>
                        <TextBlock Text="{Binding Description2}"  MaxHeight="60" FontFamily="Global User Interface"/>
                        <TextBlock Text="{Binding Description3}"  MaxHeight="60" FontFamily="Global User Interface"/>
                        <TextBlock Text="{Binding Description4}"  MaxHeight="60" FontFamily="Global User Interface"/>
                    </StackPanel>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

这会为列表视图中的每个项目放置 6 个文本块

当我 select 列表视图中的一个项目时遇到的问题我使用点击事件填充详细信息窗格,但我无法弄清楚如何从 selected 中获取 6 个项目项目

有人能给我指出正确的方向吗

感谢任何帮助

马克

我会将点击事件设置为网格并通过 xaml 路径。像这样:

xaml:

 <ListView x:Name="itemListView"
  Margin="0,4.714,10,0.429"
  ItemsSource="{Binding Source={StaticResource itemsViewSource}}"
  SelectionChanged="itemListView_SelectionChanged" Loaded="itemListView_Loaded" Grid.Row="4" >

        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid Height="110" Margin="6" Tapped="listViewItem_Tapped">                      
                    <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Width="110" Height="110">
                        <Image Source="{Binding Image}" Stretch="UniformToFill"/>
                    </Border>
                    <StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="10,0,0,0">
                        <TextBlock Text="{Binding Title}"  TextWrapping="NoWrap" FontFamily="Global User Interface"/>
                        <TextBlock Text="{Binding Subtitle}"  TextWrapping="NoWrap"/>
                        <TextBlock Text="{Binding Description}"  MaxHeight="60" FontFamily="Global User Interface"/>
                        <TextBlock Text="{Binding Description2}"  MaxHeight="60" FontFamily="Global User Interface"/>
                        <TextBlock Text="{Binding Description3}"  MaxHeight="60" FontFamily="Global User Interface"/>
                        <TextBlock Text="{Binding Description4}"  MaxHeight="60" FontFamily="Global User Interface"/>
                    </StackPanel>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

在后面的代码中你可以这样做:

 private async void listViewItem_Tapped(object sender, TappedRoutedEventArgs e)
        {           
              Grid gridElement = (sender as Grid);
               //Get the stackpanel
              Stackpanel stackPanelWithElements = gridElement.Children.ElementAt(1) as Stackpanel;   
               //get the first TextBlock      
              TextBlock titleTextBlock = stackPanelWithElements.Children.ElementAt(0) as TextBlock;

              //Get the text of the textblock
              String title = titleTextBlock.Text;

              //Get the next text
             TextBlock subTitleTextBlock = stackPanelWithElements.Children.ElementAt(1) as TextBlock;
             String subTitle = subTitleTextBlock.Text;

            //get the other elements ...
         }