相关疑难解决方法(0)

在滚动查看器中居中选定的项目

我试图将一个选定的项目放在ScrollViewer内的ListView中心,并努力计算我应该相对于ListView设置ScrollViewer的垂直偏移量.

以下链接为我设置了正确的轨道,但由于WinRT API的限制,无法使用它们:

期望的效果如下:

在scrollviewer中居中选定的项目

这是我的XAML中的示例设置:

<ScrollViewer x:Name="MyScrollViewer">
    <ListView x:Name="MyView" VerticalAlignment="Center"
                      SelectionChanged="Selector_OnSelectionChanged">
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid Width="80" Height="80" Margin="0">
                    <TextBlock Text="{Binding}" />
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
        <ListView.Items>
            <x:String>1</x:String>
            <x:String>2</x:String>
            <x:String>3</x:String>
            <x:String>4</x:String>
            <x:String>5</x:String>
            <x:String>6</x:String>
            <x:String>7</x:String>
            <x:String>8</x:String>
            <x:String>9</x:String>
        </ListView.Items>
    </ListView>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

知道所选项目的索引,如何计算我可以在我的方法中使用的垂直偏移量:

private void Selector_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
    double maxVerticalOffset = MyScrollViewer.ExtentHeight - MyScrollViewer.ViewportHeight;

    int selectedItemIndex = MyView.SelectedIndex;

    double verticalOffset = ...

    MyScrollViewer.ChangeView(null, verticalOffset, null);
}
Run Code Online (Sandbox Code Playgroud)

c# windows-runtime winrt-xaml windows-store-apps

4
推荐指数
1
解决办法
1万
查看次数