powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / как перебрать все контролы на форме WPF
4 сообщений из 4, страница 1 из 1
как перебрать все контролы на форме WPF
    #38415549
vladi67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Подскажите пожалуйста
как перебрать все контролы на форме WPF(VB)

Код: vbnet
1.
2.
3.
For Each ctrl In ... ?
       MsgBox(ctrl.Name)
next



Я понимаю, что они видимо сидят в Grid
но у меня ничего не получается.

Спасибо заранее
...
Рейтинг: 0 / 0
как перебрать все контролы на форме WPF
    #38415602
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
как перебрать все контролы на форме WPF
    #38416079
vladi67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeiKvladi67,

http://wpftutorial.net/LogicalAndVisualTree.html

До конца не понял все
Перевел все в WPF-VB

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim grid = MyClass.FindAncestor(Of Grid)(Me.Content) 

Public Shared Function FindAncestor(Of TT As Class)(dependencyObject As DependencyObject) As TT

        Dim target As DependencyObject = dependencyObject

        Do
            target = VisualTreeHelper.GetParent(target)


        Loop While target IsNot Nothing AndAlso Not (TypeOf target Is TT)
        
        Return TryCast(target, TT)

 End Function



А как получить имена контролов на форме и можно ли поменять программно их названия, не пойму как и где.
...
Рейтинг: 0 / 0
как перебрать все контролы на форме WPF
    #38416679
vladi67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока сделал таким образом.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
<System.Runtime.CompilerServices.Extension> 

GetChildren(Of Grid)(Me.Content)

Public Shared Function GetChildren(Of TChild As Class)(reference As DependencyObject) As List(Of TChild)
	Dim result As New List(Of TChild)()

	' enumerate all of the children of the supplied element searching for all the   
	' elements that match the supplied type  
	For x As Integer = 0 To VisualTreeHelper.GetChildrenCount(reference) - 1
		Dim child As DependencyObject = VisualTreeHelper.GetChild(reference, x)
		Dim tChildInstance As TChild = TryCast(child, TChild)
		If tChildInstance IsNot Nothing Then
			result.Add(tChildInstance)
		End If

                If child.DependencyObjectType.Name = "Label" Then
                     MsgBox(DirectCast(child, System.Windows.Controls.Label).Content.ToString)
                     .....................
                end if
		' now repeat the process on all the children of the current child element  
		' by recursively calling this method  
		'result.AddRange(child.GetChildren(Of TChild)())
	Next
	Return result
End Function
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / как перебрать все контролы на форме WPF
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]