C#Windows商店应用:枚举一个griviewitem的孩子

时间:2014-02-25 18:51:41

标签: c# xaml windows-store-apps

我遇到了麻烦,怎么可能枚举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

2 个答案:

答案 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