C# 如何从子级获取父级集合的计数?

C# 如何从子级获取父级集合的计数?,c#,silverlight,C#,Silverlight,我已经为列表框的ItemsSource分配了一个ObservableCollection。Listbox使用的是一个DataTemplate,其中包含一个usercontrol,其中的项绑定到每个listboxitem的属性 我在usercontrol上有一个向上和向下按钮,可以在列表中向上或向下移动项目。列表按我正在更改的属性排序。单击向上或向下,DisplayOrder属性被更改,我使用INotifyProperty告诉ObservableCollection它需要重新排序 usercont

我已经为列表框的ItemsSource分配了一个ObservableCollection。Listbox使用的是一个DataTemplate,其中包含一个usercontrol,其中的项绑定到每个listboxitem的属性

我在usercontrol上有一个向上和向下按钮,可以在列表中向上或向下移动项目。列表按我正在更改的属性排序。单击向上或向下,DisplayOrder属性被更改,我使用INotifyProperty告诉ObservableCollection它需要重新排序

usercontrol获取项目计数的最佳方式是什么,以便在项目到达列表底部时禁用向下按钮。顶部很简单,我比较0

listBox1.Items.Count?
this.Parent.Controls.Count?

我看到两种处理方法

第一种方法是在将每个项目添加到集合中时,将集合的句柄传递给每个项目,以便它们可以计算它们本身是第一个还是最后一个项目

另一种方法是公开项目上的可写属性,如CanGoUp和CanGoDown,父控件将负责正确设置这些属性。我更喜欢这个解决方案,因为它将父列表的行为与子项分离。尽管向上/向下按钮位于子项上,但它实际上是父项列表的一项功能