我有一个ObservableCollection分配给列表框的ItemsSource。 Listbox正在使用DataTemplate,其中包含一个usercontrol,其中包含绑定到每个listboxitem属性的项目。
我在usercontrol上有一个向上和向下按钮,可以在列表中向上或向下移动项目。列表按我正在更改的属性排序。单击向上或向下,DisplayOrder属性被更改,我正在使用INotifyProperty告诉它需要重新排序的ObservableCollection。
用户控件获取项目数的最佳方法是什么,以便在项目到达列表底部时禁用向下按钮。 (顶部很容易,我比较为0)
答案 0 :(得分:0)
listBox1.Items.Count? this.Parent.Controls.Count?
答案 1 :(得分:0)
我看到两种处理方式。
第一种方法是将集合的句柄传递给每个项目(当它们被添加到集合中时),这样他们就可以计算出它们是第一个还是最后一个项目。
另一种是在您的商品上公开可写属性,例如CanGoUp
和CanGoDown
,您的父控件负责正确设置这些属性。我更喜欢这种解决方案,因为它将父列表的行为与子项解耦。即使向上/向下按钮放在您的子项上,它实际上也是父列表的功能。