2016-04-08 7 views
0

Ich möchte in der Schleife für jeden Knoten in der Lage sein, Hintergrund im Stack Panel zu ändern, wenn der Knoten zugegriffen und nachdem verlassen Hintergrund wieder auf Transparent gesetzt.in WPF Zugriffstafel Panel von verschachtelten Knoten in der Baumansicht

Mein Problem: Ich weiß nicht, wie man auf Stack Panel zugreifen, um BackGround von Code hinter zu ändern. Ich würde schätzen jede Hilfe

Hier ist mein Code: TreeView-Steuerelement

<TreeView Grid.Column="1" Grid.Row="0" ItemsSource="{Binding ListOfNodes}" 
                Background="Linen" Margin="0,0,0,-0"> 
    <TreeView.ItemContainerStyle> 
     <Style TargetType="{x:Type TreeViewItem}"> 
      <Setter Property="IsExpanded" Value="True"/> 
     </Style> 
    </TreeView.ItemContainerStyle> 
    <TreeView.ItemTemplate> 
     <HierarchicalDataTemplate x:Name="HDT_node" DataType="Node" ItemsSource="{Binding Children}"> 
      <StackPanel Orientation="Horizontal" 
            MouseLeftButtonDown="btnTreeItemStartPlay" 
            Background="Transparent"> 
       <Image Source="{Binding Path=image.Source}" Width="30" Height="30" 
           HorizontalAlignment="Left" 
            MouseEnter="ZoomStart" MouseLeave="ZoomStop" /> 
      </StackPanel> 
     </HierarchicalDataTemplate> 
    </TreeView.ItemTemplate> 
</TreeView> 

Klasse Knoten:

public class Node 
{ 
    public Image image { get; set; } 

    public List<Node> Children { get; set; } 

    public Node() 
    { 
    } 

    public Node(Image imageIn, int orderIndexIn) 
    { 
     image = imageIn; 
     Children = new List<Node>(); 
    } 
} 
+0

Ähnlich zu diesem: http://stackoverflow.com/questions/34117944/listbox-items-return-string-when-datatemplate-is-button –

Antwort

1

Es gibt keinen direkten Weg StackPanel innerhalb DataTemplate zuzugreifen. Sie können jedoch immer noch VisualTreeHelper verwenden, um zur Laufzeit über den visuellen Baum zu iterieren und alles zu tun, was Sie tun möchten.

Bevor Sie dies tun, verwenden Sie WPF Visual Tree Visualizer, um sich mit Visual Tree vertraut zu machen, die Sie haben. Starten Sie danach von TreeView und durchlaufen Sie die Kinder, um das gewünschte Kind zu erhalten. Basierend auf Ihren Vorlagen variiert der visuelle Baum.

+0

Vielen Dank. Es half. – Yefim

+0

@Yefim wenn das was du suchst, vergiss nicht es zu akzeptieren –

Verwandte Themen