我遇到了麻烦,怎么可能枚举gridviewitem对象的子节点?
我有GridView
得到一些GridViewItem
,其中包含StackPanel
,其中包含一些TextBlock
,如下所示:
foreach (var usr in list)
{
GridViewItem item = new GridViewItem();
StackPanel sp = new StackPanel();
sp.Children.Add(new TextBlock() { Text = usr.name, Foreground = new SolidColorBrush(Windows.UI.Colors.Black) });
sp.Children.Add(new TextBlock() { Text = usr.surname });
sp.Children.Add(new TextBlock() { Text = usr.company });
SolidColorBrush blueBrush = new SolidColorBrush(Windows.UI.Colors.DarkGray);
item.Content = sp;
item.Width = 200;
item.Height = 200;
item.Background = blueBrush;
UsrGridView.Items.Add(item);
}
和foreach
将是:
foreach(GridViewItem grvItem in UsrGridView.Items)
{
foreach(object sp in grvItem.Content)
{
}
}
但是,显然,代码不起作用,错误在第二个foreach
,告诉我object
不包含GetEnumerator
函数。
感谢任何可以解决此问题的人。
再见,
Fin3
答案 0 :(得分:0)
使用VisualTreeHelper。 element
是任何UIElement:
for ( int i = 0; i < VisualTreeHelper.GetChildrenCount( element ); i++ )
{
var uiElement = VisualTreeHelper.GetChild( element, i ) as UIElement;
...
}
答案 1 :(得分:0)
如果您的GridViewItem.Content
,您可以将StackPanel
投射到StackPanel
,然后枚举Children
的{{1}}(实施IEnumerable
)仅包含您可以在内部StackPanel
中投射的TextBlock
:
foreach