【问题标题】: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 的值(不是第一个值)。
后一部分可以单独作为一个选项,但可能会出现一些性能问题,尤其是在快速滚动时。