0

我有一个 WPF 控件,它有一个绑定到可观察集合的列表框。

集合变化很大,因此跟踪其项目索引有点痛苦。

我需要列表框中的项目根据它们在屏幕上的位置/索引而具有不同的高度。

Items[0].Height = 30; 
Items[1].Height = 25;
Items[2...n].Height = 20;

所以项目的高度不依赖于数据。

我不想将 dep 属性添加到数据项并尝试计算集合中的数据项索引。

我想让列表框项目知道它们在列表框 ItemSource 中的索引。

PS我可以忍受任何项目控制(不一定是列表框)

可以吗?

4

1 回答 1

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>
于 2013-01-23T03:46:29.243 回答