ScrollIntoView属性不适用于windows 10通用应用程序中的gridview

本文关键字:应用程序 gridview 10通 属性 不适用 适用于 windows ScrollIntoView | 更新日期: 2023-09-27 17:59:38

我尝试了以下代码:

XAML代码:

<GridView x:Name="listgrid">
 <GridView.ItemTemplate>
   <DataTemplate>
     <StackPanel Margin="15,15,0,0">
       <Image Height="170" Width="170" Source="{Binding}"></Image>
     </StackPanel>
   </DataTemplate>
 </GridView.ItemTemplate>

Cs代码:

for (int i = 1; i < 50; i++)
{
   list.Add("ms-appx:///Images/A-aa.jpg");
}
listgrid.ItemsSource = list;
listgrid.ScrollIntoView(listgrid.Items[30]);

我在上面的代码中滚动视图到我选择的项目,但它没有显示任何更改,我认为我用错了这个属性。任何人请帮助我滚动到网格视图位置。

ScrollIntoView属性不适用于windows 10通用应用程序中的gridview

我已经在MSDN中回答了您的相同问题:https://social.msdn.microsoft.com/Forums/windowsapps/en-US/d0a772b3-80b9-4a11-92a9-89963c29a52f/scrollintoview-property-not-working-for-gridview-in-windows-10-universal-app?forum=wpdevelop

你需要有更多的东西来区分项目,例如,给每个图像一个名称,因为你绑定到GridView的项目是相同的,ScrollIntoView默认会找到第一个。

通常,您需要为GridView设置一个高度属性。

对于更复杂的需求,有一个好的线程可以参考:Windows 10 ScrollIntoView()未滚动到列表视图中间的项目

尝试订阅Loaded事件并在事件处理程序内调用ScrollIntoView

listgrid.Loaded += Listgrid_Loaded;
....
private void Listgrid_Loaded(object sender, RoutedEventArgs e)
{
    listgrid.ScrollIntoView(listgrid.Items[30]);
}

试试这个

private void Gridview_Loaded(object sender, RoutedEventArgs e)
    {
        if (ShellPage.Current.SelectedRecItem != null)
        {
            this.gridview.SelectedItem = ShellPage.Current.SelectedRecItem;
            this.gridview.UpdateLayout();
            this.gridview.ScrollIntoView(ShellPage.Current.SelectedRecItem);
        }
    }