2015-01-16 4 views
1

У меня есть большая сетка, которая содержит много детей, как кнопки, метки и сетки. Последние решетки иерархии содержат текстовые поля.WPF цикл через элементы управления текстовыми полями в сетке дети

Я хочу, чтобы петли через эти текстовые поля, но это не работает:

For Each g1 As Grid In LayoutRoot.Children 
     If (Row.Children.GetType Is GetType(Grid)) Then 
     For Each g2 As Grid In g1.Children 
      For Each g3 As Grid In g2.Children 
       For Each txtbox As TextBox In g3.Children 
        'Some Code 
       Next 
      Next 
     Next 
    End If 
Next 
+0

Это текстовое поле или текстовая колонка в сетке? – Dandy

+0

спасибо за быстрый ответ и просто текстовое поле – user3621917

ответ

1

Вы должны получить только TextBox детей к петле через них:

g3.Children.OfType(Of TextBox)() 

Полный код:

For Each g1 In LayoutRoot.Children.OfType(Of Grid)() //change 
    'If (TypeOf(g1.children) Is grid Then 
     For Each g2 As Grid In g1.Children 
      For Each g3 As Grid In g2.Children 
       For Each txtbox As TextBox In g3.Children.OfType(Of TextBox)() //change 
        'Some Code 
       Next 
      Next 
     Next 
    'End If 
Next 
+0

Вы не можете использовать 'Grid' для' UIElementCollection'. Почему вы проверяете это? – Shaharyar

+0

Я изменил его с помощью этой строки If (Row.Children.GetType Is GetType (Grid)) Я добавил эту строку, потому что мне нужно убедиться, что она перебирает только решетки, потому что в этот момент сетка имеет много типов детей, а не только сетки – user3621917

+0

Вы можете выбрать только «Grids», как и для «TextBoxes». Затем вы также можете удалить эту проверку «if». – Shaharyar

Смежные вопросы