C# UWP-can';t访问ItemsPanel中的值
我有以下XAML,但我似乎无法访问相应的.CS文件中ItemsWrapGrid的内容-有人能告诉我应该做什么吗(以下是隐藏的代码和XAML):C# UWP-can';t访问ItemsPanel中的值,c#,xaml,uwp,itemspanel,C#,Xaml,Uwp,Itemspanel,我有以下XAML,但我似乎无法访问相应的.CS文件中ItemsWrapGrid的内容-有人能告诉我应该做什么吗(以下是隐藏的代码和XAML): private void wifiTapped(对象发送方,tappedroutedventargs e) { WriteLine(“在这里”+e.GetType().ToString()); ItemsWrapGrid wg=(ItemsWrapGrid)发送方; Debug.WriteLine(例如OriginalSource.ToString())
private void wifiTapped(对象发送方,tappedroutedventargs e)
{
WriteLine(“在这里”+e.GetType().ToString());
ItemsWrapGrid wg=(ItemsWrapGrid)发送方;
Debug.WriteLine(例如OriginalSource.ToString());
foreach(工作组儿童中的对照c)
{
Debug.WriteLine(“控件”+c.Name);
}
Debug.WriteLine(“离开”);
}
为了清楚起见,当我运行这个程序时,我有三个数据项(因此它可以工作),但我希望能够做的是单击这三个数据项中的任何一个,并能够在数据面板中识别各个控件及其值
提前谢谢,这让我快发疯了。
Paul.在GridView上将
IsItemClickEnabled
设置为true,并挂接到GridView本身上的ItemClick事件。从事件参数中,您可以获得发送者(最有可能是GridViewItem
UI元素本身,您的DataTemplate
内容是其子元素)和ClickedItem
,这是datatemplate的绑定datacontext,在您的例子中是data:wifiNets
,如果绑定有效,则意味着您实际上根本不必查看VisualTree
如果出于某种原因,您希望通过VisualChildren对任何ItemsControl的项进行递归,请使用ItemsControl上的
ContainerFromIndex
或ContainerFromItem
方法来获取承载每个datatemplate实例的ItemContainer,尽管我不建议这样做,除非您确实需要。理想情况下,您不应该经常需要手动拖网查看可视化树。正如我所看到的,wifiTapped()是为ItemsRapGrid定义的。为什么不使用gdViewClick()呢?毕竟,UWP打算采用MVVM方法,所以您是否可以尝试将逻辑移到viewmodel而不是代码隐藏?我必须正确检查,但我相信子项
和项资源
是两件完全不同的事情。您是否尝试在您的代码隐藏中访问ItemsSource
?嗨,伙计们,我使用了Jonny下面的评论,并对绑定数据的类型进行了e.clickeditem转换-这正是我所需要的。
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>