GridView中的ScrollIntoView不起作用

时间:2014-02-26 14:02:43

标签: c# gridview winrt-xaml scrollviewer

ScrollIntoView()方法对我不起作用,但我能够将问题缩小一点。

我们已更改GridView的样式,如下所示:

<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="GridView">
            <Border>
                <ScrollViewer x:Name="ScrollViewer" >
                    <Grid >

                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="38" />
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" MinWidth="120"/>
                        </Grid.ColumnDefinitions>

                        <Border x:Name="NewGroupPlaceHolderFirst" Grid.Column="0" ... />

                        <ItemsPresenter Grid.Row="1"  ... />

                        <Border x:Name="NewGroupPlaceHolderLast" Grid.Column="2"  ... />

                    </Grid>
                </ScrollViewer>
            </Border>
        </ControlTemplate>
    </Setter.Value>
</Setter>

ItemsPresenter独立于ScrollViewers时,该方法可行。 但是需要边界来创建一个新的组。

是否有可能使此方法有效的解决方案?

的问候, 奥利弗

1 个答案:

答案 0 :(得分:1)

您必须自己实现滚动:

  1. 通过使用VisualTreeHelper检查GridView的子节点来查找ScrollViewer。
  2. 确定要滚动到的项目的水平/垂直偏移。
  3. 滚动到该位置。

    var offset = targetItem.TransformToVisual(scrollViewer).TransFormPoint(new Point(0,0))。X; scrollViewer.ScrollToHorizo​​ntalOffset(偏移);