我对标记并不熟悉。我尝试用它来DataTemplate
测试TreeView
。基本上我正在尝试创建一个名为parents
的列表,向其中添加2个元素,然后创建两个子节点并将它们添加到列表中的一个父节点,最后将父节点列表绑定到{{1 }}。但我无法弄清楚如何在列表中引用TreeView
。现在我想我不应该浪费我的时间与xaml,并应该在代码背后做到这一点。有什么想法吗?
p1, p2
这两个类:
<Window.Resources>
<local:Parent Name="Parent 1" x:Key="p1"/>
<local:Parent Name="Parent 2" x:Key="p2"/>
<x:ArrayExtension Type="local:Parent" x:Key="parents">
<!-- Can't refer p1 and p2 from here :( -->
</x:ArrayExtension>
<local:Child ChildName="Child 1" Parent="{StaticResource ResourceKey=p1}"/>
<local:Child ChildName="Child 1" Parent="{StaticResource ResourceKey=p1}"/>
</Window.Resources>
<Grid>
<StackPanel VerticalAlignment="Center">
<TreeView ItemsSource="{Binding Source={StaticResource ResourceKey=p1}}" />
</StackPanel>
</Grid>
答案 0 :(得分:1)
TreeView
放入StackPanel
。 StackPanel
堆叠元素,但在您的情况下,其中只有一个元素 - TreeView
。HierarchicalDataTemplate
定义TreeView
。这是一个例子:<HierarchicalDataTemplate x:Key="TreeViewTemplate" ItemsSource="{Binding Children}" >
<!-- Some markup here -->
</ HierarchicalDataTemplate>
这里ItemsSource
属性告诉绑定数据中的哪些属性包含当前节点的子集合。它以递归方式应用于该孩子的每个孩子和每个孩子,依此类推。
最后,关于在xaml中定义数据。有几种方法,但在这种情况下,我宁愿从Parent
派生ParentTest
并创建填充儿童集合的默认c'tor。