b""
我正在尝试通过动态填充的gridview的索引选择一个子级,但是我尝试过的总是返回null。
例如第一个孩子,例如:
encode()
我在这里做什么错了?
答案 0 :(得分:0)
您可以直接从方法ItemsControl.ContainerFromIndex(Int32)中获取相应的GridViewItem
,而无需使用VisualTreeHelper
再次获取它。
var container = MainGridStations.ContainerFromIndex(0);
GridViewItem gridViewItem= container as GridViewItem;
gridViewItem.Background = new SolidColorBrush(Colors.Red);
container
是从索引中获取的相应GridViewItem
。
请注意:由于您的内部Grid具有Background="White"
属性配置,因此可以使用上面的代码更改gridViewItem.Background
来删除代码以更清楚地看到效果。
---更新---
加载项目后,您必须获得GridViewItem
。您可以在GridView_ItemClick
事件处理程序或页面的已加载事件处理程序中尝试代码。另外请注意我的上述注意事项,为了获得更明显的效果,请删除您上面的xaml代码中的Background="White"
。
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
var container = MainGridStations.ContainerFromIndex(0);
GridViewItem gridViewItem = container as GridViewItem;
gridViewItem.Background = new SolidColorBrush(Colors.Green);
}
//get the item here
private void GridView_ItemClick(object sender, ItemClickEventArgs e)
{
var container = MainGridStations.ContainerFromIndex(0);
GridViewItem gridViewItem= container as GridViewItem;
gridViewItem.Background = new SolidColorBrush(Colors.Red);
//var presenter = VisualTreeHelper.GetChild(container, 0) as GridViewItem;
}