星期四, 10月 28, 2010

[Silverlight][VB]透過VisualTreeHelper找出DependencyObject內之Object

Private Function GetVisualTreeObject(Of T)(ByVal obj As DependencyObject)
    Dim child As DependencyObject
    Dim count As Integer = VisualTreeHelper.GetChildrenCount(obj)
    For index = 0 To count - 1
        child = VisualTreeHelper.GetChild(obj, index)
        If child.GetType().Name = GetType(T).Name Then
            Return child
        End If
        child = GetVisualTreeObject(Of T)(child)
        If Not IsNothing(child) Then
            Return child
        End If
    Next
    Return Nothing
End Function

Private Function FindInternalObjectByName(Of T)(ByVal name As String, ByVal obj As DependencyObject)
    Dim child As DependencyObject
    Dim count As Integer = VisualTreeHelper.GetChildrenCount(obj)
    For index = 0 To count - 1
        child = VisualTreeHelper.GetChild(obj, index)
        If child.GetType().Name = GetType(T).Name Then
            Dim fe As FrameworkElement = child
            If fe.Name = name Then
                Return child
            End If
        End If
        child = GetVisualTreeObject(child)
        If Not IsNothing(child) Then
            Return child
        End If
    Next
    Return Nothing
End Function

沒有留言: