2012-04-12 14 views

答えて

1

あなたが正しいかどうかはわかりませんが、要素の視覚的な子を取得する場合は、VisualTreeHelper.GetChildVisualTreeHelper.GetChildrenCountを試してみてください。

PS:あなたはこのような何か(作成されている場合は

private IEnumerable<DependencyObject> GetChildren(DependencyObject parent) 
{ 
    var count = VisualTreeHelper.GetChildrenCount(parent); 
    if (count > 0) 
    { 
     for (int i = 0; i < count; i++) 
      yield return VisualTreeHelper.GetChild(parent, i); 
    } 
    else 
     yield break; 
} 

private DependencyObject FindInTheVT(DependencyObject parent,Predicate<DependencyObject> predicate) 
{ 
    IEnumerable<DependencyObject> layer = GetChildren(parent); 

    while (layer.Any()) 
    { 
     foreach (var d in layer) 
      if (predicate(d)) return d; 

     layer = layer.SelectMany(x => GetChildren(x)); 
    } 

    return null; 
} 
+0

私はVisualTreeHelperが必要です。ありがとう! – hrum

0

:通常それは...ツリービューアイテム自体への参照を取得するために

UPDATE(将来の世代のためのコード例)より大きな問題です)XAMLまたはコード:

TreeViewItem Item = new TreeViewItem(); 

StackPanel HeaderLayout = new StackPanel() { Orientation = Orientation.Horizontal }; 

HeaderLayout.Children.Add(new Image()); 
HeaderLayout.Children.Add(new TextBlock() { Text = "tv item" }); 

Item.Header = HeaderLayout; 

次のようなものを使用することができます

私はこれを行うことはお勧めしません。代わりにカスタムヘッダー(ImageプロパティとTextBlockプロパティを含むクラス)を作成し、それをヘッダーまたはカスタムテンプレートに割り当てる方が良いでしょう。

関連する問題