Как отобразить индекс TreeViewItem в элементе ItemTemplate xaml? - PullRequest
0 голосов
/ 06 октября 2011

У меня есть TreeView, который использует DataTemplate для настройки внешнего вида каждого элемента, содержащегося в TreeView.В DataTemplate я хочу отобразить индекс соответствующего элемента в древовидной структуре.Каков наилучший способ приблизиться к этому?Позволит ли конкретный {Binding Path = ""} мне получить индекс элемента?

My TreeView:

 <TreeView Name="_myTreeView"
      ItemsSource="{Binding [SourceCollection]}" 
      ItemTemplate="{StaticResource x:ResourceKey=MyTemplate}"
 />

My 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] - путь привязки, который я хочу использовать для отображения индекса элемента в Дереве.Я полностью готов использовать другой подход, если мой нынешний метод нецелесообразен для достижения этой цели.

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

Вы можете установить AlternationCount на int.MaxValue на TreeView и привязать к вложенному свойству ItemsControl.AlternationIndex в шаблоне.

<TextBlock Grid.Row="2" Text="{Binding Path=ItemsControl.AlternationIndex}"/>
0 голосов
/ 10 октября 2011

В итоге я добавил новое свойство к элементам в моей коллекции SourceCollection.Это новое свойство хранит искомое значение индекса.

Требования для этого приложения изменены так, что простого целочисленного индекса было недостаточно.Добавление нового свойства было лучшим способом пойти сюда.Индекс обновляется после каждой операции изменения в дереве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...