我想在我的收藏视图中自动滚动到所选项目。我正在使用ObservableCollection,并且能够在我的视图中预先选择一个项目。所以我希望它出现在屏幕上,以便在项目很多的情况下看到。
因此,视图应自动滚动到所选项目。
代码
public ObservableCollection WorkerFlockDetails { get; set; }
private WorkerFlock selectedFlock;
public WorkerFlock SelectedFlock
{
get => selectedFlock;
set
{
if (selectedFlock != value)
{
try
{
//Feed = selectedFlock.Feed_intake.ToString() + " Kg";
selectedFlock = value;
}
catch
{
}
finally
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SelectedFlock)));
}
}
}
}这是我初始化和预选的地方
public HomeWorkerViewModel()
{
WorkerFlockDetails = new ObservableCollection<WorkerFlock>();
//populate the collection
Init();
SelectedFlock = WorkerFlockDetails.Skip(3).FirstOrDefault();
}发布于 2021-10-23 04:09:54
在页面变得可见之前,您可以使用下面的代码并在OnAppearing中设置ScrollTo方法。
Xaml:
<CollectionView x:Name="collectionView"
ItemsSource="{Binding WorkerFlockDetails}"
ItemsLayout="HorizontalList"
SelectionMode="Single"
VerticalOptions="Start"
Margin="0,22,0,0"
HeightRequest="32"
SelectedItem="{Binding SelectedFlock, Mode=TwoWay}">
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid>
<Label Text="{Binding Name}" Margin="20,0,20,0"
TextColor="#707070"
FontSize="20"></Label>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>代码隐藏:
public partial class Page19 : ContentPage
{
public ObservableCollection<WorkerFlock> WorkerFlockDetails { get; set; }
public WorkerFlock SelectedFlock { get; set; }
public Page19()
{
InitializeComponent();
WorkerFlockDetails = new ObservableCollection<WorkerFlock>()
{
new WorkerFlock(){ Name="A"},
new WorkerFlock(){ Name="B"},
new WorkerFlock(){ Name="C"},
new WorkerFlock(){ Name="D"},
new WorkerFlock(){ Name="E"},
new WorkerFlock(){ Name="F"},
new WorkerFlock(){ Name="G"}
};
SelectedFlock = WorkerFlockDetails.Skip(3).FirstOrDefault();
this.BindingContext = this;
}
protected override void OnAppearing()
{
base.OnAppearing();
collectionView.ScrollTo(collectionView.SelectedItem, null, ScrollToPosition.Center, false);
}
}
public class WorkerFlock
{
public string Name { get; set; }
}发布于 2021-10-22 11:47:24
为此,您可以在CollectionView上使用.ScrollTo();方法。
https://stackoverflow.com/questions/69675854
复制相似问题