在Windows手机中,我有一个LongListMultiSelector控件,用户可以进行多项选择,并将选择内容保存在文件中。
然后,如果用户尝试从文件中加载他的选择,则使用IsSelected属性再次选择加载选定的项目。
我的问题是,为什么只检查可见项目,而取消选中视图外的其他所选项目,我该如何检查它们呢?
答案 0 :(得分:1)
LonglistMultiSelector不会在启动时加载所有项目,而是加载所需的项目(请参阅ItemRealized和ItemUnrealized事件)。由于您要选择的某些项目未分配给UI,因此无法选择它们。您可以通过滚动到该项来解决此问题。
我使用以下代码选择LongListMultiSelector中的所有项目。
foreach (ViewModels.ItemViewModel item in longListMultiSelector.ItemsSource)
{
LongListMultiSelectorItem container = longListMultiSelector.ContainerFromItem(item) as LongListMultiSelectorItem;
if (container == null)
{
// item has't been assigned to UI
longListMultiSelector.ScrollTo(item);
container = longListMultiSelector.ContainerFromItem(item) as LongListMultiSelectorItem;
}
container.IsSelected = true;
}