ObservableCollection.Next() 和 observablecollection.previous() 函数
我有一个包含 20 个项目(图像)和按钮(“下一步”)的 observablecollection。我如何获得像 observablecollection.next() 和 observablecollection.previous() 这样的函数?
I have a observablecollection with 20 items(images) and button("Next").How I can get functions like observablecollection.next() and observablecollection.previous() ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
可观察的集合没有“当前”甚至“选定”项目的概念。他们都是平等的。
您可以保留一个简单的
int
索引并递增/递减它。或者使用绑定 ListBox 或类似属性的 SelectedItem 属性。
An observable collection has no concept of 'Current' or even of 'Selected' item. They are all equal.
You could keep a simple
int
index and Increment/Decrement it.Or use the SelectedItem property of a bound ListBox or similar.
最简单的灵魂是使用迭代器 - 简单整数来跟踪当前项目。
当您按下下一个按钮时,检查计数器是否不大于列表中的元素数量并递增计数器:
您之前的函数需要检查计数器是否不为负数并递减计数器。
您可以使用 Enumerator 尝试更简洁的模式
The simplest soultion would be to keep track of your current item using iterator - simple integer.
When you press the next button, check the counter if is not bigger that number of elements in the list and increment the counter:
your previous function needs to check if counter is not negative number and decrement the counter.
You can try a more neat pattern with Enumerator
对于下一个按钮,您可以调用 GetEnumerator< /a> 在 ObservableCollection 上。这将为您提供一个 IEnumerator您可以在其中调用 Current 和 MoveNext。
如果您需要实现前一个,那么您将使用更像卢卡斯的解决方案,带有索引。
For just a next button, you could call GetEnumerator on the ObservableCollection. This will give you an IEnumerator<T> on which you can call Current and MoveNext.
If you need to implement a previous then you would use a solution more like lukas', with an index.