首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >滚动到Xamarin c#中可观察集合中的选定项

滚动到Xamarin c#中可观察集合中的选定项
EN

Stack Overflow用户
提问于 2021-10-22 11:11:44
回答 2查看 175关注 0票数 1

我想在我的收藏视图中自动滚动到所选项目。我正在使用ObservableCollection,并且能够在我的视图中预先选择一个项目。所以我希望它出现在屏幕上,以便在项目很多的情况下看到。

因此,视图应自动滚动到所选项目。

代码

代码语言:javascript
复制
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)));
                }
            }
        }
    }

这是我初始化和预选的地方

代码语言:javascript
复制
public HomeWorkerViewModel()
    {

        WorkerFlockDetails = new ObservableCollection<WorkerFlock>();

        //populate the collection
        Init();

        
        SelectedFlock = WorkerFlockDetails.Skip(3).FirstOrDefault();

    }
EN

回答 2

Stack Overflow用户

发布于 2021-10-23 04:09:54

在页面变得可见之前,您可以使用下面的代码并在OnAppearing中设置ScrollTo方法。

Xaml:

代码语言:javascript
复制
  <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>

代码隐藏:

代码语言:javascript
复制
  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; }

}
票数 1
EN

Stack Overflow用户

发布于 2021-10-22 11:47:24

为此,您可以在CollectionView上使用.ScrollTo();方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69675854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档