在ExpBox视图中显示ListBox中的隔离存储文件名项

时间:2013-04-23 07:03:54

标签: windows-phone-7 isolatedstorage expander

最初,我有一个ListBox与List一起获取Bind,其中包含一个ListBoxItem,其内容将是通过调用IsolatedStorageFile类的GetUserContent属性从Isolated Storage填充的文件名。

现在在一个新的要求中我想放一个Expander,它的标题对应于Isolated Storage中的不同文件夹。当扩展特定扩展器时,我会从相应文件夹中加载隔离存储中的文件名,如“\ data *”(数据文件夹)。

所以任何人都可以在expandderview控件上引导我并填充其列表框项目,并将该特定文件夹的文件名保存在Isolated Storage中。

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

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

<LitBox ItemsSource="{Binding Groups}">

接下来,在ItemTemplate内部,您需要定义展开视图,并将另一个列表框绑定到该组的项目。类似的东西(我不确定您使用的Expander视图,但它可能是这样的):

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

现在,这个坏主意的原因是ListBoxes在同一方向的其他列表框中不能很好地运行。充其量,你会得到时髦的滚动,最糟糕的是你会遇到内存问题,因为系统将无法处理虚拟化。为避免出现某些可能的滚动问题,您还可以使用ItemsControl作为面板模板放置StackPanel。这又会导致内存问题,具体取决于您拥有多少项目。

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

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