gpt4 book ai didi

windows-phone-7 - WP7 工具包更新从 LongListSelector 中删除了 GetItemsInView()

转载 作者:行者123 更新时间:2023-12-04 07:18:42 24 4
gpt4 key购买 nike

通过对 Windows Phone Toolkit 的最新更新,他们彻底检查了 Mango 版本的 LongListSelector 的内部结构。其中一项更改是删除了对 GetItemsInView() 的支持。函数(它现在返回一个空列表)。此函数先前返回当前在屏幕上可见的项目列表。我在离开页面时使用它来获取对最顶部可见项目的引用,以便我可以通过使用 ScrollTo(object item) 来支持墓碑后的恢复。 .

有谁知道建议的替代方案是什么?我知道 Mango tombstoning 的问题要小得多,但我仍然想支持它,并且可能还有其他一些我想记忆滚动位置的情况。在某些情况下,我的 list 有数千个项目。

最佳答案

据我所知,您必须订阅 LLS 的 LinkUnlink事件。 Link将传入一个 arg,其中包含添加到 LLS 可见部分的项目。 Unlink对从 LLS 中删除的那些项目执行相同的操作。所以你会做这样的事情:

List<string> trackedItems = new List<string>();

private void myListOfStrings_Link(object sender, LinkUnlinkEventArgs e)
{
var x = e.ContentPresenter;
if (x == null || x.Content == null)
return;
trackedItems.Add(x.Content.ToString());
}

private void myListOfString_Unlink(object sender, LinkUnlinkEventArgs e)
{
var x = e.ContentPresenter;
if (x == null || x.Content == null)
return;
trackedItems.Remove(x.Content.ToString());
}

请注意 LinkUnlink将为基础列表中的每个渲染项目触发,因此如果您使用 LLS 的分组功能,那么您将不得不根据实际返回的类型来增加是否跟踪项目的测试。因此,如果您有某种组对象要跟踪其基础对象,则可以执行以下操作:

private void myGroupedListOfObjects_Link(object sender, LinkUnlinkEventArgs e)
{
var x = e.ContentPresenter;
if (x == null || x.Content == null)
return;
var myObject = x.Content as MyObject;
if (myObject != null)
{
foreach (var item in myObject.Items)
{
trackedItems.Add(item);
}
}
}

我希望这有帮助!让我们知道它是否有效。

关于windows-phone-7 - WP7 工具包更新从 LongListSelector 中删除了 GetItemsInView(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7124262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com