0

最初,我有一个 ListBox 与一个 List 绑定,其中包含一个 ListBoxItem,其内容将是通过调用 IsolatedStorageFile 类的 GetUserContent 属性从独立存储中填充的文件名。

现在在一个新的需求中,我想放置一个扩展器,其标题将对应于独立存储中的不同文件夹。当扩展该特定扩展器时,我将从相应文件夹(如“\data*”(数据文件夹))中的独立存储加载文件名。

因此,任何人都可以在 expanderview 控件上指导我并填充其列表框项目,并将该特定文件夹的文件名保存在独立存储中。

提前致谢。

4

1 回答 1

0

首先 - 您描述的 UI 不是标准的 WP 行为。您需要做的是拥有一组组。

您需要绑定到 Groups 集合的外部列表框中的 ItemsSource:

<LitBox ItemsSource="{Binding Groups}">

接下来,ItemTemplate您需要在其中定义展开视图,并将 ANOTHER 列表框绑定到组的项目。类似的东西(我不确定您使用的是什么 Expander 视图,但可能是这样的):

<ListBox.ItemTemplate>
  <whatever:ExpanderView>
    <ListBox ItemsSource="{Binding Items}"/>
  </whatever:ExpanderView>
</ListBox>

现在,这是一个坏主意的原因是 ListBox 在相同方向的其他列表框中不能很好地发挥作用。充其量,你会得到时髦的滚动,最坏的情况是你会遇到内存问题,因为系统将无法处理虚拟化。为避免一些潜在的滚动问题,您还可以放置一个ItemsControlwith aStackPanel作为面板模板。这又可能会导致内存问题,具体取决于您拥有的项目数量。

我的建议是你改变你的用户界面。这三个选项之一应该对您有好处:

  1. 将行为稍微更改为长列表选择器(类似于联系人本机应用程序的行为)。这并不完全是您想要的,但更符合 Windows Phone 指南,并且可以减少您的头痛。
  2. 将此作为 2 阶段操作进行。您有一个文件夹列表,当您点击其中一个时,会打开一个包含相关项目的新页面。
  3. 另一个不太好但可能的解决方案是有一个 ObservableCollection<> 只包含文件夹,然后相应地添加/删除项目(确保正确格式化它们 - 你可以使用样式或模板选择器)

于 2013-04-23T12:28:11.507 回答