0

ListBoxItemこの関数を使用して、ButtonaTextBlock内のすべてのコントロールを再帰的に処理していDataTemplateます。の代わりに常にボタンを選択しTextBlockます。私の機能の何が問題なのか誰にもわかりますか?

Private Function FindVisualChild(ByVal obj As DependencyObject) As TextBlock
 Dim result As TextBlock = Nothing
 For i As Integer = 0 To VisualTreeHelper.GetChildrenCount(obj) - 1
  Dim child As DependencyObject = TryCast(VisualTreeHelper.GetChild(obj, i), DependencyObject)
  If Not child Is Nothing AndAlso TypeOf child Is DependencyObject Then
    If TypeOf child Is TextBlock Then
      Dim tbl As TextBlock = TryCast(child, TextBlock)
      If Not tbl Is Nothing Then result = tbl
    Else
      Dim tbl As TextBlock = FindVisualChild(child)
      If Not tbl Is Nothing Then result = tbl : Exit For
    End If
  End If
Next
Return result

終了機能

4

1 に答える 1

0

単純に見えますが、機能します。この線より下のタイプと混同された理由を説明していません

Private Function FindVisualChild(ByVal obj As DependencyObject) As TextBlock
Dim result As TextBlock = Nothing
For i As Integer = 0 To VisualTreeHelper.GetChildrenCount(obj) - 1
  Dim child As DependencyObject = TryCast(VisualTreeHelper.GetChild(obj, i), DependencyObject)
  If TypeOf child Is Button Then Continue For 'fixes it
  If Not child Is Nothing AndAlso TypeOf child Is DependencyObject Then
    If TypeOf child Is TextBlock Then
      Dim tbl As TextBlock = TryCast(child, TextBlock)
      If Not tbl Is Nothing Then result = tbl
    Else
      Dim tbl As TextBlock = FindVisualChild(child)
      If Not tbl Is Nothing Then result = tbl : Exit For
    End If
  End If
Next
Return result

終了機能

于 2013-03-15T23:52:09.423 に答える