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 Forms 的可重用 ViewCell 中绑定命令?
更新 ObservableCollection 无法正确更新 Xamarin 表单中的 ListView
子列表未绑定到 xamarin 表单中的 ListView 分组