【发布时间】:2020-08-05 18:59:59
【问题描述】:
我有使用 CollectionView 的 XAML 表单。我将视图绑定到日期对象的集合。我在代码后面设置了 SelectedItem,它按预期工作。然后我尝试在后面的代码中使用 ScrollTo,但是一旦加载页面,它总是显示集合中的第一项。页面加载后,我连接了一个图像以触发 ScrollTo 事件,它按预期工作。下面是我的代码。提前感谢您的帮助!
'''
for (int i = 0; i < 31 ; i++)
{
ScheduleDate date = new ScheduleDate();
date._Date = dt.AddDays(i);
colDates.Add(date);
}
cvDate.ItemsSource = colDates;
cvDate.SelectedItem = colDates[10];
cvDate.ScrollTo(cvDate.SelectedItem, null, ScrollToPosition.Start, true)
'''
XAML 表单
'''
<CollectionView x:Name="cvDate" Grid.Row="0" Grid.Column="1"
SelectionMode="Single" >
<CollectionView.ItemsLayout>
<LinearItemsLayout Orientation="Horizontal" />
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<Label Text="{Binding Description}"
FontAttributes="Bold"
FontSize="Large"
HorizontalOptions="Center"
VerticalOptions="Center"
/>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
'''
编辑:
我连接了 OnCollectionViewScrolled 事件,当从 OnAppearing() 执行以下代码行时
cvDate.ScrollTo(cvDate.SelectedItem, null, ScrollToPosition.Start, false);
OnCollectionViewScrolled 未被调用。但是,当我从按钮单击事件中执行同一行代码时,OnCollectionViewScrolled 正在被触发。
【问题讨论】:
标签: xaml xamarin.forms