我有一个TreeView,它使用DataTemplate来自定义TreeView中包含的每个项目的外观。在DataTemplate中,我想在Treeview中显示相关项的索引。解决这个问题的最佳方法是什么?特定的{Binding Path =“”}是否允许我获取项目的索引?
我的TreeView:
<TreeView Name="_myTreeView"
ItemsSource="{Binding [SourceCollection]}"
ItemTemplate="{StaticResource x:ResourceKey=MyTemplate}"
/>
我的DataTemplate:
<DataTemplate x:Key="MyTemplate">
<Grid Margin="5,5,5,5">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Source="{Binding Path=IconPath}"/>
<TextBlock Grid.Row="1" Text="{Binding Path=Caption}"/>
<TextBlock Grid.Row="2" Text="{Binding Path=[SomePath]}"/>
</Grid>
</DataTemplate>
其中 [SourceCollection] 是树从中提取数据的来源, [SomePath] 是我想用来显示索引的绑定路径树中的项目。如果我目前的方法是实现这一目标的一种不可取的方式,我完全可以采取不同的方法。
答案 0 :(得分:2)
您可以在AlternationCount
上将int.MaxValue
设置为TreeView
,并绑定到模板中的ItemsControl.AlternationIndex
附加属性。
<TextBlock Grid.Row="2" Text="{Binding Path=ItemsControl.AlternationIndex}"/>
答案 1 :(得分:0)
我最终在SourceCollection中的项目中添加了一个新属性。这个新属性存储了我正在寻找的索引值。
此应用程序的要求已更改,因此简单的整数索引不足。添加新房产是最好的方式。在树上的每次更改操作后,索引都会更新。