如何在 WP8 中获取 LongListSelector 的 VerticalOffset

2023-11-26

在 WP7 中,LongListSelector 有一个底层 ScrollViewer,我可以从中恢复列表的垂直偏移。但在 Windows Phone 8 中,没有底层 ScrollViewer 或任何类似的类为我提供 VerticalOffset 属性。

我一直在寻找,但没有找到任何东西。我可以使用一个给出列表中第一个可见元素的函数来解决,但我也没有找到任何东西。 ItemRealized 事件对此没有用,因为它没有提供在视口顶部显示的确切项目。


这将为您提供 LLS 中的第一个可见项目。

private Dictionary<object, ContentPresenter> items;

private object GetFirstVisibleItem(LongListSelector lls)
{
    var offset = FindViewport(lls).Viewport.Top;
    return items.Where(x => Canvas.GetTop(x.Value) + x.Value.ActualHeight > offset)
        .OrderBy(x => Canvas.GetTop(x.Value)).First().Key;
}

private void LLS_ItemRealized(object sender, ItemRealizationEventArgs e)
{
    if (e.ItemKind == LongListSelectorItemKind.Item)
    {
        object o = e.Container.DataContext;
        items[o] = e.Container;
    }
}

private void LLS_ItemUnrealized(object sender, ItemRealizationEventArgs e)
{
    if (e.ItemKind == LongListSelectorItemKind.Item)
    {
        object o = e.Container.DataContext;
        items.Remove(o);
    }
}

private static ViewportControl FindViewport(DependencyObject parent)
{
    var childCount = VisualTreeHelper.GetChildrenCount(parent);
    for (var i = 0; i < childCount; i++)
    {
        var elt = VisualTreeHelper.GetChild(parent, i);
        if (elt is ViewportControl) return (ViewportControl)elt;
        var result = FindViewport(elt);
        if (result != null) return result;
    }
    return null;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 WP8 中获取 LongListSelector 的 VerticalOffset 的相关文章

随机推荐

  • 模板 haskell 中的数据构造函数

    我正在尝试创建环 Z n 像普通算术一样 但以某个整数为模 Z4 就是一个示例 instance Additive C Z4 where zero Z4 0 Z4 x Z4 y Z4 x y mod 4 戒指依此类推 我希望能够快速生成这些
  • perl 中的命名空间、包和模块有什么区别?

    命名空间或包相同吗 我使用 Perl 我们只有包 我知道还有其他编程语言也包含模块 有什么不同 The package指令设置命名空间 因此 命名空间也称为包 Perl 没有模块的正式定义 有很多差异 但以下内容适用于绝大多数模块 一个带有
  • AngularJS 指令中的可选表达式属性

    我有一个自定义导航指令 需要一个可选的 禁用 属性 我不确定它是否可能 在我的主控制器中 controller NavCtrl UserResource RoleResource function UserResource RoleReso
  • 使用 Excel 中的 VBA 打开 Outlook 邮件 .msg 文件

    我试图使用 VBA 从指定目录打开 msg 文件但我不断收到运行时错误 我的代码 Sub bla Dim objOL As Object Dim Msg As Object Set objOL CreateObject Outlook Ap
  • 确定asp.net core中的端口

    我想用asp net core Web Api 制作一些微服务 对于服务发现 我想使用 Consul 我必须通过 HTTP API 注册服务 包括 IP 和端口 我的问题是 我如何知道服务中使用了哪个端口 有没有办法通过代码确定使用的端口
  • 从 URL 同步下载图像

    我只想从互联网 URL 获取 BitmapImage 但我的函数似乎无法正常工作 它只返回图像的一小部分 我知道 WebResponse 是异步工作的 这当然就是我遇到这个问题的原因 但是我怎样才能同步完成呢 internal static
  • 使用Spring的CachingConnectionFactory时关闭Session

    java 文档here与 Spring CachingConnectionFactory 相关的有评论 注意 此 ConnectionFactory 要求显式关闭从其共享连接获取的所有会话 无论如何 这是对本机 JMS 访问代码的通常建议
  • 更改服务器发送事件的源 (url)

    如何更改声明中的源集EventSource 我尝试过这样的事情 var source new EventSource blahblah php path window location pathname Few lines later so
  • asp.net(母版页)中的默认按钮?

    在我的网络应用程序中 我有一个母版页 当用户按 Enter 键 我的应用程序有母版页 时 我想为登录页面实现默认按钮 我如何放置默认按钮 Page Form DefaultButton crtlLoginUserLogin FindCont
  • self.image.frame.width = 20 给出仅获取属性错误

    我试图将图像视图的宽度更改为 20 IBOutlet weak var image UIImageView 在 viewDidLoad 中使用此代码self image frame width 20但它给我错误无法分配给属性 width是一
  • 如何检测元素是否具有“自动”高度

    Both window getComputedStyle element height and element clientHeight返回元素的当前高度 以像素为单位 无论 CSS 中设置的值如何 有什么方法可以查出高度是否设置为auto
  • 在带有 m1 芯片的 Mac 上导入 jax 失败

    对于 python 3 8 8 并使用新的 mac air 带有 m1 芯片 在 jupyter 笔记本和 python 终端中 import jax引发此错误 Python 3 8 8 default Apr 13 2021 12 59
  • 尝试使用 python 访问“googledrive”时出错(googlequickstart.py源代码)

    我正在尝试学习如何从 Python 访问 Google Drive 但遇到问题 我按照google官网的教程进行操作 https developers google com drive t python hl es另外 我看过关于此的视频教
  • Ionic 4 本机插件地理定位给我“找不到模块:错误:无法解析‘rxjs/Observable’”

    我正在尝试使用 ionic 本机插件geolocation in ionic 4但我收到了这个错误 编译失败 node modules ionic native geolocation index js 找不到模块 错误 无法解析 rxjs
  • 使用键将列表映射到 Automapper 中的现有列表

    Automapper 可以轻松地将一个对象类型列表映射到另一个不同对象类型列表 但是是否可以使用 ID 作为键将其映射到现有列表 我还没有找到比以下更好的方法 这里是源和目的地 public class Source public int
  • CFEXECUTE 指定它以管理员权限运行

    我正在尝试使用活动目录更改密码cfexecute 我的页面上唯一的代码是这样的 填写用户名和新密码
  • 如何为 Android 自定义视图添加 OnClick 事件

    我有两个图像在屏幕上移动 一个是球 一个是人 我想要发生的是 当用户触摸该人的图像时 球就会掉落 我的问题是我似乎无法添加 onclick ontouch 事件并使其正常工作 我没有正确实施它 有人可以帮忙吗 我已经包括了以下 3 类 格雷
  • 如何在 Linux pthreads 中设置线程的名称?

    Linux 中有没有办法设置线程的名称 我的主要目的是它在调试时会很有帮助 而且如果该名称通过例如暴露出来也很好 proc PID task TID 从 glibc v2 12 开始 您可以使用pthread setname np and
  • X 秒后执行 JavaScript

    我正在使用 和 JavaScript 构建一个插页式页面 脚本非常简单但简洁 一切正常 但我还想在几秒钟 例如 10 秒 后关闭 div 到目前为止我所拥有的 我有两个 div 1 和 2 我对 div 1 进行了 CSS 设置 例如 di
  • 如何在 WP8 中获取 LongListSelector 的 VerticalOffset

    在 WP7 中 LongListSelector 有一个底层 ScrollViewer 我可以从中恢复列表的垂直偏移 但在 Windows Phone 8 中 没有底层 ScrollViewer 或任何类似的类为我提供 VerticalOf