如何在ItemTemplate xaml中显示TreeViewItem的索引?
本文关键字:TreeViewItem 索引 显示 ItemTemplate xaml | 更新日期: 2023-09-27 18:10:48
我有一个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]是我想用来显示树内项目索引的绑定路径。如果我目前的方法不适合实现这一目标,我愿意采取完全不同的方法。
可以在TreeView
上设置AlternationCount
为int.MaxValue
,并绑定模板中的ItemsControl.AlternationIndex
附加属性。
<TextBlock Grid.Row="2" Text="{Binding Path=ItemsControl.AlternationIndex}"/>
我最终为SourceCollection中的项添加了一个新属性。这个新属性存储了我正在查找的索引值。
这个应用程序的需求改变了,一个简单的整数索引是不够的。添加一个新属性是最好的方法。