Xamarin 表单中的可扩展 ListView

Posted

技术标签:

【中文标题】Xamarin 表单中的可扩展 ListView【英文标题】:Expandable ListView in Xamarin Forms 【发布时间】:2015-08-15 08:18:53 【问题描述】:

我有以下代码使用 Xamarin Forms 显示 ListView:

App.cs

public App ()

    MainPage = GetMainPage();


public static Page GetMainPage()

    return new NavigationPage(new DrilldownListViewByItem());

DrilldownListViewByItem:

public class DrilldownListViewByItem : ContentPage

    public DrilldownListViewByItem()
    
        Title = "Drilldown List Using ListView";
        var listView = new ListView();
        listView.ItemsSource = new ListItem[] 
            new ListItem Title = "First", Description="1st item",
            new ListItem Title = "Second", Description="2nd item",
            new ListItem Title = "Third", Description="3rd item"
            ;
        listView.ItemTemplate = new DataTemplate(typeof(TextCell));
        listView.ItemTemplate.SetBinding(TextCell.TextProperty, "Title");

        listView.ItemTapped += async (sender, args) =>
        
            var item = args.Item as ListItem;
            //if (item == null) return;
            //await Navigation.PushAsync(new DetailPage(item));
            //listView.SelectedItem = null;
        ;
        Content = listView;
    

ListItem 具有以下属性:

public string Title  get; set; 
public string Description  get; set; 

我想要做的是在我点击其中一个主要项目时显示子项目。这些子项目应该在开始时隐藏,但它们应该在那里,我不想每次在一个项目上标签时都加载它们。任何想法?谢谢!

【问题讨论】:

【参考方案1】:

尝试根据列表项的点击事件更改您希望出现和消失的项目的可见性。

ios 上,您可能还必须更改单元格高度(使用 HeightRequest),因为它可能不会自行更改。我猜android会工作得很好。

希望这会有所帮助。

【讨论】:

我不想指定固定高度。如何自动获得所需的高度? 您是否尝试过将 HasUnevenRows 设置为 true?它是 ListView 上的一个属性。这可能会有所帮助,但它可能不会自动执行此操作,您将不得不强制执行此操作。至少我最后一次尝试是这样的。 是的,我已经尝试过了。 ViewCell 的大小不会在 WinPhone 和 iPhone 上刷新。对于 WinPhone,当我将设备旋转到横向,然后再次旋转到纵向时,ViewCell 会刷新。对于 iPhone,当 ViewCell 被滚动出屏幕然后又被带回屏幕时,ViewCell 会被刷新。 那么据我所知,您将不得不使用 HeightRequest 来根据新内容正确更新尺寸。

以上是关于Xamarin 表单中的可扩展 ListView的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin 表单 ListView 绑定

如何在 Xamarin Forms 的可重用 ViewCell 中绑定命令?

更新 ObservableCollection 无法正确更新 Xamarin 表单中的 ListView

子列表未绑定到 xamarin 表单中的 ListView 分组

通过拖放功能重新排序 Xamarin 表单中的 ListView

Xamarin 表单 ListView ItemTapped/ItemSelected 命令绑定在 XAML