2016-04-08 61 views
0

我希望在每个节点的循环中能够在节点访问时以及在其离开将背景设置为透明时再改变背景。在树状视图中嵌套节点的wpf访问堆栈面板

我的问题:我不知道如何访问堆栈面板从后面的代码更改BackGround。 我希望得到任何帮助

这里是我的代码: TreeView控件

<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> 

等级节点:

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

与此类似:http://stackoverflow.com/questions/34117944/listbox-items-return-string-when-datatemplate-is-button –

回答

1

还有就是内DataTemplate访问StackPanel没有直接的方法。但是,仍然可以使用VisualTreeHelper在运行时遍历可视树,并执行任何您想要的操作。

在此之前,请使用WPF Visual Tree Visualizer来熟悉您拥有的Visual Tree。之后从TreeView开始,并重复儿童以获得想要的孩子。根据您的模板,可视化树会有所不同。

+0

非常感谢。它有帮助。 – Yefim

+0

@Yefim如果那是你正在寻找的东西,别忘了接受它 –