UWP - 无法访问 ItemsPanel 中的值

UWP - can't access values in ItemsPanel

我有以下 XAML 但我似乎无法访问相应 .CS 文件中 ItemsWrapGrid 的内容 - 谁能告诉我我应该做什么(这是后面的代码和 xaml) :

private void wifiTapped(object sender, TappedRoutedEventArgs e)
        {
            Debug.WriteLine("in here " + e.GetType().ToString());
            ItemsWrapGrid wg = (ItemsWrapGrid) sender;

            Debug.WriteLine(e.OriginalSource.ToString());
            foreach (Control c in wg.Children)
            {
                Debug.WriteLine("Control " + c.Name);

            }

            Debug.WriteLine("leaving ");
        }





<GridView VerticalAlignment="Top" ItemsSource="{Binding nets}" x:Name="GDView" ItemClick="gdViewClick" >
            <GridView.ItemTemplate>
                <DataTemplate x:Name="configDataTemplate" x:DataType="data:wifiNets" >
                    <StackPanel Height="300" Width="350" Margin="10" Name="dtStackPanel" >
                        <Image Source="Assets\wifiIcon.png" Width="200" Height="201"  />
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="Name" Margin="0,0,10,0"/>
                            <TextBlock Name="configSSID" Width="auto"  Text="{x:Bind NetSSID}" FontSize="24" />
                        </StackPanel>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="Strength"  Margin="0,0,10,0"/>
                            <!--<TextBlock Name="configStrength" Width="auto" Text="{x:Bind NetSSIDStrength}" FontSize="20" />-->
                            <ProgressBar Name="configProgBar" Maximum="5" Value="{x:Bind NetSSIDStrength}" Foreground="Green"  />
                        </StackPanel>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="Connected" Margin="0,0,10,0"/>
                            <TextBlock Name="configConnectedTo" Text="{x:Bind NetSSIDConnected}" FontSize="20"/>
                        </StackPanel>

                    </StackPanel>
                </DataTemplate>
            </GridView.ItemTemplate>

            <GridView.ItemsPanel>
                <ItemsPanelTemplate>
                    <ItemsWrapGrid MaximumRowsOrColumns="10" Orientation="Vertical"  Tapped="wifiTapped" />
                </ItemsPanelTemplate>
            </GridView.ItemsPanel>
        </GridView> 

需要说明的是,当我 运行 这个时,我有三项数据(所以它正在工作) - 但我希望能够做的是点击这三项数据中的任何一项项,并能够识别数据面板中的各个控件及其值。

提前致谢,这让我抓狂。 保罗.

在您的 GridView 上将 IsItemClickEnabled 设置为 true,并挂接到 GridView 本身的 ItemClick 事件。从事件参数中,您可以获得发件人(很可能是 GridViewItem UI 元素本身,您的 DataTemplate 内容是其中的子元素),以及 ClickedItem,它是数据模板的绑定数据上下文——在你的例子中是 data:wifiNets 的实例——如果你的绑定工作意味着你实际上根本不需要查看 VisualTree。

如果出于某种原因你想通过 VisualChildren 递归任何 ItemsControl 的项目,请使用 ItemsControl 上的 ContainerFromIndexContainerFromItem 方法来获取托管每个数据模板实例的 ItemContainer - 尽管我不建议这样做,除非你也确实需要。理想情况下,您不应该经常需要手动拖网可视化树。