如何获得一个项目的索引,一个ItemsControl
问题描述:
我要显示一个项目的当前指数在一个ItemsControl:如何获得一个项目的索引,一个ItemsControl
<TextBlock Foreground="#ffffffff" Margin="8,8,2,2" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Items.CurrentIndex}" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Right"/>
这是我最好的猜测。我遇到了很多可能的解决方案,但使用alternationcount(在Silverlight中不支持,因为它似乎)或其他没有给我一个结果。
ItemsControl的是这样的:
<ItemsControl Grid.Column="0" Grid.ColumnSpan="3" HorizontalAlignment="Stretch" Grid.Row="6" ItemsSource="{Binding Alternatives, Mode=TwoWay}" ></ItemsControl>
绑定到ItemsControl的名单是一些属性的简单对象。
我真的很喜欢在XAML中这样做,因为我们在很多页面上重复使用该对象。
任何好的建议将是伟大的。
PS:我不希望用户交互后的索引,它应该自动检索。
答
如果你想要项目控件中项目的索引 - 如果有某种选择对我来说只是有意义的。但itemsscontrol没有选择器,所以没有选择,所以没有选择更改事件。所以如果你想要一些选择采取列表框
一件事
<ItemsControl ItemsSource="{Binding Alternatives, Mode=TwoWay}" ></ItemsControl>
模式=双向是没有意义的,导致你的itemsscontrol永远不会设置下划线源。
编辑:我只是假设你想要从你的评论。您可以使用ICollectionView遍历您的项目。但你的Itemscontrol当然不能显示这个。但你可以改变项目本身以显示迭代
ICollectionView view = CollectionViewsource.GetDefaultView(Alternatives);
view.CurrentChanged += (s,a) =>
{
var current = this.view.CurrentItem;
//to stuff with your current item here
};
其他地方要遍历
view.MoveCurrentToNext();
你应该处理第一和最后一个项目以及东西太多。
http://stackoverflow.com/questions/4333807/how-to-get-listbox-selected-index这是一个类似的问题,虽然它使用列表框 – Marshal 2012-02-08 08:02:40
@Marshal:获取索引shouldn'从互动中获得,我想索引,所以我可以枚举项目控件 – Terry 2012-02-08 08:24:09