我有一个WPF控件,它有一个绑定到可观察集合的列表框。
集合变化很大,因此跟踪其项目索引有点痛苦。
我需要根据列表框中的位置/索引将列表框中的项目设置为不同的高度。
Items[0].Height = 30;
Items[1].Height = 25;
Items[2...n].Height = 20;
所以项目的高度不依赖于数据。
我不想在数据项中添加dep属性,并尝试计算集合中的数据项索引。
我想让列表框项目在列表框ItemSource中了解它们的索引。
P.S。我可以使用任何项目控件(不一定是列表框)
可以吗?
答案 0 :(得分:1)
只要您不使用交替行样式,就可以劫持交替索引。这是一个简单的例子,它只显示索引以及每个项目的ToString:
<ListBox AlternationCount="99999" ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}, Path=(ItemsControl.AlternationIndex)}"/>
<TextBlock Text="{Binding}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>