stacks
stacks

Reputation: 231

Find control on active window or inside grid instead of MainWindow

With this code i can get control only on MainWindow:

Public Shared Function FindChild(Of T As DependencyObject)(ByVal parent As DependencyObject, ByVal childName As String) As T
    If parent Is Nothing Then Return Nothing
    Dim foundChild As T = Nothing
    Dim childrenCount As Integer = VisualTreeHelper.GetChildrenCount(parent)

    For i As Integer = 0 To childrenCount - 1
        Dim child = VisualTreeHelper.GetChild(parent, i)
        Dim childType As T = TryCast(child, T)

        If childType Is Nothing Then
            foundChild = FindChild(Of T)(child, childName)
            If foundChild IsNot Nothing Then Exit For
        ElseIf Not String.IsNullOrEmpty(childName) Then
            Dim frameworkElement = TryCast(child, FrameworkElement)

            If frameworkElement IsNot Nothing AndAlso frameworkElement.Name = childName Then
                foundChild = CType(child, T)
                Exit For
            End If
        Else
            foundChild = CType(child, T)
            Exit For
        End If
    Next

    Return foundChild
End Function

Public sub findControl()
 Dim foundTKU As TextBox = FindChild(Of TextBox)(Application.Current.MainWindow, "TKU_" & row("gorivo"))
End sub

How would I implement the same thing but instead MainWindow to look in active window or inside WPF grid which is called "controlGrid"

Upvotes: 0

Views: 34

Answers (1)

mm8
mm8

Reputation: 169300

Just pass an instance of the active window or the control to the method instead of passing Application.Current.MainWindow:

Public sub findControl()
    Dim foundTKU As TextBox = FindChild(Of TextBox)(controlGrid, "TKU_" & row("gorivo"))
End sub

Upvotes: 1

Related Questions