gpt4 book ai didi

c# - ScrollTo 无法在 Xamarin.Forms 中使用分组的 ListView

转载 作者:行者123 更新时间:2023-11-30 14:49:07 25 4
gpt4 key购买 nike

我有一个 TabbedPage,它包含一些由 ContentView 组成的 ContentPage,其中一些有一个 ListView

ListView 包含一个由自定义模型类表示的分组 ItemsSource:

public class DataGroup: List<DataGroupItem>
{
public string HeaderText { get; set; }

public string ShortName { get; set; }

public string SubTitle { get; set; }

public DataGroup(string headerText, string shortName)
{
HeaderText= headerText;
ShortName= shortName;
}
}

XAML 代码(它也有一个 ItemTemplate):

<ListView x:Name="listView"
Grid.Row="0"
GroupDisplayBinding="{Binding HeaderText}"
GroupShortNameBinding="{Binding ShortName}"
HasUnevenRows="True"
IsGroupingEnabled="True"
ItemsSource="{Binding DataGroups}"
SeparatorColor="Black"
SeparatorVisibility="Default">
...
</ListView>

当我更改实际选项卡时,我需要将 ListView 滚动到某个组。

我使用这段代码:

ObservableCollection<DataGroup> dataGroups
= this.listView.ItemsSource as ObservableCollection<DataGroup>;
if (scrolling)
{
var res = dataGroups.Where(dg=>dg.ItemCount > 3).LastOrDefault();
if (res != null)
//Device.StartTimer(TimeSpan.FromMilliseconds(150), () =>
//{
this.listView.ScrollTo(res, ScrollToPosition.Center, false);
//return false;
//});
}

我尝试了 ScrollToPosition 的所有变体,不幸的是,没有任何反应。

我还应该尝试什么?

最佳答案

好吧,解决这个问题真是一场冒险。

首先,我认为我应该将一个子项设置为ScrollTo 方法的目标,但它没有任何改变。

作为一个模糊的想法,我将 SelectedItem 添加到 soup 中,它起作用了,所以我得到了这个作为最终结果:

ObservableCollection<DataGroup> dataGroups= this.listView.ItemsSource as ObservableCollection<DataGroup>;
if (scrolling)
{
var res = dataGroups.Where(dg=>dg.ItemCount > 3).LastOrDefault();
if (res != null && res.Count > 0)
{
this.listView.SelectedItem = res[0];
this.listView.ScrollTo(this.listView.SelectedItem, ScrollToPosition.MakeVisible, false);
}
}

关于c# - ScrollTo 无法在 Xamarin.Forms 中使用分组的 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39306074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com