2013-01-23 47 views
0

我有一个WPF控件,它有一个绑定到可观察集合的列表框。有没有办法使用ItemsSource集合中的索引绑定项目高度?

集合变化很大所以跟踪它的项目索引是有点痛苦。

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

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

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

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

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

P.S.我可以住任何物品控制(不一定是列表框)

可以吗?

回答

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> 
+0

有趣的..让我试试。我需要一个转换器来使用索引创建正确的高度。让我们看看它是否会足够快。谢谢 –

+0

它几乎工作!不幸的是该项目0有时显示99998。一切工作正常! –

相关问题