WPF: Как получить список всех элементов UIElement заданного типа
Напишем метод, который будет возвращать список всех элементов некоторого контейнера:
''' <summary> ''' Возвращает все элементы UIElement заданного типа. ''' </summary> Public Shared Iterator Function FindVisualChildren(Of T As DependencyObject)(ByVal depObj As DependencyObject) As IEnumerable(Of T) If (depObj IsNot Nothing) Then For i As Integer = 0 To VisualTreeHelper.GetChildrenCount(depObj) - 1 Dim child As DependencyObject = VisualTreeHelper.GetChild(depObj, i) If (child IsNot Nothing) AndAlso (TypeOf child Is T) Then Yield CType((CObj(child)), T) End If For Each current As T In MainWindow.FindVisualChildren(Of T)(child) Yield current Next Next End If Return End Function
Теперь можно использовать данный метод таким способом (здесь MainWindow – это тот контейнер, список чьих потомков нужно получить):
Dim sameTypeElements as New List(Of ComboBox) For Each cb As ComboBox In FindVisualChildren(Of ComboBox)(MainWindow) sameTypeElements.Add(cb) Next
Ключевые слова: :