我有以下课程:
public class NameObject
{
public string Name { get; set; }
public bool Suggested { get; set; }
public bool Popular { get; set; }
public string Gender { get; set; }
public short Personality { get; set; }
public short Decade { get; set; }
public string Origin { get; set; }
public string Diminutives { get; set; }
public string ShortMeaning { get; set; }
public string LongMeaning { get; set; }
}
我在MainPage类中的ObservableCollection中填充了该对象的大约500个条目。由于标签导航需要填充ListView,因此我有另一个课程。
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="engME.YourFullNamesListPage">
<ListView x:Name="FullNamesList" ItemsSource="">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding ???}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage>
我的目标是用每个条目填充此ListView,但仅填充NameList的某些属性。 (姓名,性别,简称)
public partial class YourFullNamesListPage : ContentPage
{
public YourFullNamesListPage()
{
InitializeComponent();
FullNamesList.ItemsSource= MainPage.NameList;
}
}
在此先感谢您的帮助!我已经尝试了大约9个小时,但仍在学习中,但未成功。
答案 0 :(得分:3)
Cell
的范围为NameObject
类的一个实例。
您应该能够做到这一点:
<ListView x:Name="FullNamesList" ItemsSource="">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding Name}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
如果要显示更多信息,则需要找到某种方式,在TextCell
中,您也可以使用Details
。但是,您也可以使用ViewCell
构建自己的设计。
例如,像这样:
<ViewCell>
<StackLayout>
<Label Text="{Binding Name}"/>
<Label Text="{Binding Gender}"/>
</StackLayout>
</ViewCell>
从注释中收集,您已将NameList
中的ItemsSource
集合声明为成员,而不是属性。为了能够绑定到字段,必须将其声明为公共属性。
更改public static ObservableCollection<NameObject> NameList = new ObservableCollection<NameObject>();
进入
public static ObservableCollection<NameObject> NameList { get; set; } = new ObservableCollection<NameObject>();