我想在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:我不希望用户交互后的索引,应该自动检索。
答案 0 :(得分:0)
如果你想要一个itemscontrol中项目的索引 - 如果有某种选择,它对我来说才有意义。但是itemsscontrol没有选择器,因此没有选择,因此没有selectionchanged事件。所以,如果你想选择一些列表框
还有一件事
<ItemsControl ItemsSource="{Binding Alternatives, Mode=TwoWay}" ></ItemsControl>
mode = twoway毫无意义,因为你的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();
你应该处理第一个和最后一个项目以及那些东西。