首先 - 您描述的 UI 不是标准的 WP 行为。您需要做的是拥有一组组。
您需要绑定到 Groups 集合的外部列表框中的 ItemsSource:
<LitBox ItemsSource="{Binding Groups}">
接下来,ItemTemplate
您需要在其中定义展开视图,并将 ANOTHER 列表框绑定到组的项目。类似的东西(我不确定您使用的是什么 Expander 视图,但可能是这样的):
<ListBox.ItemTemplate>
<whatever:ExpanderView>
<ListBox ItemsSource="{Binding Items}"/>
</whatever:ExpanderView>
</ListBox>
现在,这是一个坏主意的原因是 ListBox 在相同方向的其他列表框中不能很好地发挥作用。充其量,你会得到时髦的滚动,最坏的情况是你会遇到内存问题,因为系统将无法处理虚拟化。为避免一些潜在的滚动问题,您还可以放置一个ItemsControl
with aStackPanel
作为面板模板。这又可能会导致内存问题,具体取决于您拥有的项目数量。
我的建议是你改变你的用户界面。这三个选项之一应该对您有好处:
- 将行为稍微更改为长列表选择器(类似于联系人本机应用程序的行为)。这并不完全是您想要的,但更符合 Windows Phone 指南,并且可以减少您的头痛。
- 将此作为 2 阶段操作进行。您有一个文件夹列表,当您点击其中一个时,会打开一个包含相关项目的新页面。
- 另一个不太好但可能的解决方案是有一个 ObservableCollection<> 只包含文件夹,然后相应地添加/删除项目(确保正确格式化它们 - 你可以使用样式或模板选择器)