UWP - просмотр списка не прокручивается до конца - PullRequest
0 голосов
/ 07 апреля 2020

Я работаю над проектом UWP с ListView с элементами, расположенными горизонтально. ListView выровнен по правому краю, и первый добавленный элемент всегда должен быть видимым, даже если после слов добавлено любое количество элементов.

Я успешно сохранил первый элемент, который будет отображаться при добавлении новых элементов в список, используя ScrollIntoView и настройку последнего элемента.

Но, кажется, это не работает при первом открытии приложения. Он прокручивается только до середины списка.

private void ItemsSource_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
   ItemsListView.SelectedItem = Items.Last();
   ItemsListView.ScrollIntoView(Items.Last(), ScrollIntoViewAlignment.Leading);
}

Я также пытался добавить ScrollIntoView внутри события Loaded объекта ListView, пробовал с ChangeView из ScrollerView и т. Д. ,

Это мой ListView:

<ListView Name="ItemsListGrid"
                      Grid.Column="0"
                      HorizontalAlignment="Stretch" VerticalAlignment="Center"
                      BorderThickness="0"
                      Margin="0, 16, 24, 16"
                      ItemsSource="{x:Bind Items}"
                      ItemTemplateSelector="{StaticResource ItemTemplateSelector}"
                      ScrollViewer.HorizontalScrollMode="Enabled"
                      ScrollViewer.VerticalScrollMode="Disabled"
                      ScrollViewer.HorizontalScrollBarVisibility="Hidden"
                      IsItemClickEnabled="True"
                      CanDragItems = "False"
                      CanDrag = "False"
                      CanReorderItems = "False"
                      AllowDrop = "False"
                      Loaded="Grid_Loaded">
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <ItemsWrapGrid VerticalAlignment="Center" HorizontalAlignment="Right"/>
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="Margin" Value="0, 0, 0, 0"/>
                </Style>
            </ListView.ItemContainerStyle>
        </ListView>

Другое решение, которое я видел в Интернете, это:

            <ListView.ItemsPanel>  
                <ItemsPanelTemplate>  
                    <ItemsStackPanel ItemsUpdatingScrollMode="KeepLastItemInView" VerticalAlignment="Bottom" />  
                </ItemsPanelTemplate>  
            </ListView.ItemsPanel> 

Но я уже устанавливаю ItemsPanelTemplate внутри мой ListView, и я не могу использовать это.

...