C# 带有简单主文本/详细文本的Xamarin.Forms列表视图

C# 带有简单主文本/详细文本的Xamarin.Forms列表视图,c#,xamarin.forms,C#,Xamarin.forms,Xamarin网站上的示例没有显示如何简单地获取数据对象列表并使用包含主文本和详细文本的TextCells填充ListView的代码 我的代码如下所示: var newsListings = await App.Api.News.GetNewsAsync(true); var simpleNews = new List<TextCell>(); foreach (var newsData in newsListings

Xamarin网站上的示例没有显示如何简单地获取数据对象列表并使用包含主文本和详细文本的TextCells填充ListView的代码

我的代码如下所示:

var newsListings = await App.Api.News.GetNewsAsync(true);
                var simpleNews = new List<TextCell>();

                foreach (var newsData in newsListings.news)
                {
                    simpleNews.Add(new TextCell() { Text = $"{newsData.displayText}", TextColor = Color.SlateGray, Detail = $"{MonthHelper.GetShortMonth(newsData.displayDate.Month,'.')} {newsData.displayDate.Day}, {newsData.displayDate.Year}", DetailColor=Color.DarkGray });
                }

                NewsListing.ItemsSource = simpleNews;
简单XAML:

<ScrollView>
    <ListView x:Name="NewsListing"></ListView>
</ScrollView>

输出是一个列表视图,显示Xamarin.Forms.TextCell 27次…

您可以通过创建IEnumerable并将其分配给ItemSource来绑定列表,并使用模板指定要显示的数据属性来绑定列表

public class Data {
  public string Primary { get; set; }
  public string Secondary { get; set; }
}

// in your page's OnAppearing
listView.ItemsSource = new List<Data>() { // initialize your list // };

// XAML
<ListView x:Name="listView">
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextCell Text="{Binding Primary}" DetailText="{Binding Secondary}">
        <DataTemplate>
    </ListView.ItemTemplate>
</ListView>

为什么这需要我创建一个新类来进行绑定,而我应该能够拥有一个TextCell列表并将其作为我的源?如果你想手动构建一个TextCell列表,请使用TableView。你不必创建一个新的类,我只是在示例中这样做的。如果您的新闻对象是IEnumberable,您可以将其用作数据源。