【问题标题】:Scroll WinRT ListView to particular group将 WinRT ListView 滚动到特定组
【发布时间】:2012-07-04 08:35:59
【问题描述】:

我有一个 ListView 和里面的分组项目。用户有不同的导航方式进入页面,根据他导航的方式,我希望在页面打开时看到某个组。

我尝试设置这些:

itemGridView.ScrollIntoView(....);
itemGridView.SelectedIndex = ....;
itemGridView.SelectedItem = ....;

其中 itemGridView 是 ListView 的名称,但似乎都不起作用。

任何帮助表示赞赏,谢谢。

【问题讨论】:

    标签: c# .net xaml windows-runtime


    【解决方案1】:

    您可以进行一些可视化树遍历以找到属于 ListView 模板的 ScrollViewer,找到组并将 ScrollViewer 滚动到您的组的位置。

    【讨论】:

    • 我明天试一试。我希望有一个更简单的解决方案,但是如果一个人必须遍历一个可视化树,那么一个人必须遍历一个可视化树:D
    • WinRT XAML Toolkit 应该让它变得简单。只需调用 var sv = itemGridView.GetFirstDescendantOfType(),然后调用 var groupView = sv.GetDescendantsOfType().Where(gv => gv.DataContext == yourGroupViewModel),然后调用 sv.ScrollIntoView(gv)。好吧,除非它当然不起作用...... :)
    • 如果一切都是数据绑定的,那么在何时何地寻找后代是安全的?我尝试在页面的 Loaded 事件处理程序中,但似乎尚未创建所有组(例如,后代列表有 3 个项目,即使我有 5 个组等)
    • 如果使用虚拟化面板,它可能有 3 个项目而不是 5 个。您可能需要尝试执行类似的操作来禁用虚拟化,否则 - 我不确定可视化树可能是什么... 您也可以尝试使用 XAML Spy 分析您的可视化树并更好地了解其中的内容。
    • 是的,你是对的,stackpanel 是虚拟化的,这可能会导致我在遍历它时遇到麻烦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    相关资源
    最近更新 更多