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的主要内容,如果未能解决你的问题,请参考以下文章