【问题标题】:Windows 8 GridView eventsWindows 8 GridView 事件
【发布时间】:2014-03-28 07:11:52
【问题描述】:

有没有办法检测 GridView 中包含的项目之一何时滚动到视图中? 我不想为不在视图中 && 不在领先位置项目上创建一些效果。

例子:

在这个位置上,我不想调暗 Group 2,3+,但 Group 1 - 突出显示

但是当用户滚动到第 3 组时 - 它会突出显示等。

是否有某种事件可以添加到 GridView 中的项目中 - 例如 ItemmScrolledIntoView()?

【问题讨论】:

    标签: c# xaml gridview windows-8 windows-8.1


    【解决方案1】:

    默认的GridView 没有简单的方法来做到这一点。您需要自定义 GridView 或者可能不使用 GridView

    使这更容易的一个选项是将您的实现基于Hub 控件。 Hub 控件具有SectionsInView 属性(包括从该列表中获取第一项的能力)以及SectionsInViewChanged 事件。我认为您很可能会以这种方式将这两者结合起来:

    在您的 ViewModel 中,创建一个 FirstSection 属性,用于存储 SectionsInView 列表中的第一个条目。让HubSections 将叠加层(或其不透明度)或当前 VisualState 绑定到此值。

    然后,在SectionsInViewChanged 事件中,更新您的ViewModel 并通知更改。如果您通过绑定/转换器进行了更改(例如不透明度),这应该是立即的。否则,您将需要手动更改 VisualState,但这仍然不是特别难。特别是因为您只能更改 SectionsInView 的值(不是第一个值)。

    后一部分可以单独作为一个选项,但可能会出现一些性能问题,尤其是在快速滚动时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多