在这个Item显示出来后,遍历可视树 VisualTree 来找到你要的TextBlock:
GridViewItem gridviewitem = gridview.ItemContainerGenerator.ContainerFromIndex(i) as GridViewItem;
TextBlock textblock = FindVisualChildByName<TextBlock>(gridviewitem, "textblock");
...
public static T FindVisualChildByName<T>(DependencyObject parent, string name) where T : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
string controlName = child.GetValue(Control.NameProperty) as string;
if (controlName == name)
{
return child as T;
}
else
{
T result = FindVisualChildByName<T>(child, name);
if (result != null)
return result;
}
}
return null;
}
注意,一定等到你要查找的哪一项Item的ItemContainer生成才能够在可视树中遍历到。否则有null reference 异常。
类似的讨论帖子:
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
