如何在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]是我想用来显示树内项目索引的绑定路径。如果我目前的方法不适合实现这一目标,我愿意采取完全不同的方法。

如何在ItemTemplate xaml中显示TreeViewItem的索引?

可以在TreeView上设置AlternationCountint.MaxValue,并绑定模板中的ItemsControl.AlternationIndex附加属性。

<TextBlock Grid.Row="2" Text="{Binding Path=ItemsControl.AlternationIndex}"/>

我最终为SourceCollection中的项添加了一个新属性。这个新属性存储了我正在查找的索引值。

这个应用程序的需求改变了,一个简单的整数索引是不够的。添加一个新属性是最好的方法。