You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI CollectionView无法显示对象列表字符串值的问题

问题排查与解决:MAUI CollectionView绑定不显示数据

你的代码存在两个关键问题,导致CollectionView无法正常显示数据:


1. CollectionView数据模板绑定路径错误

在CollectionView的DataTemplate中,每一项的上下文已经是ObservableCollection<Person>里的单个Person对象,所以绑定属性时不需要加Person.前缀。你原来写的{Binding Person.FirstName}会试图在当前Person实例中查找名为Person的属性,这显然不存在,导致绑定失败。

修改MainPage.xaml中的DataTemplate部分:

<CollectionView.ItemTemplate>
    <DataTemplate>
        <StackLayout Margin="5">
            <HorizontalStackLayout>
                <Label Text="First name:" />
                <Label Text="{Binding FirstName}" />
            </HorizontalStackLayout>
            <HorizontalStackLayout>
                <Label Text="Last name:" />
                <Label Text="{Binding LastName}" />
            </HorizontalStackLayout>
            <HorizontalStackLayout>
                <Label Text="Email address: " />
                <Label Text="{Binding Email}" />
            </HorizontalStackLayout>
        </StackLayout>
    </DataTemplate>
</CollectionView.ItemTemplate>

2. 重复添加同一个Person实例导致数据被清空

你的ViewModel中只创建了一个Person实例,添加到集合后调用ClearFields()会清空这个实例的所有属性。因为集合里存储的是对象引用,所以列表中显示的项也会变成空值。需要在添加时创建新的Person对象,复制当前输入的值。

修改MainPageViewModel中的AddPersonToListAndDb方法:

[RelayCommand]
private void AddPersonToListAndDb()
{
    if (string.IsNullOrWhiteSpace(Person.FirstName) || 
        string.IsNullOrWhiteSpace(Person.LastName) || 
        string.IsNullOrWhiteSpace(Person.Email) || 
        string.IsNullOrWhiteSpace(Person.Password))
        return;

    // 创建新的Person实例,复制当前输入的值
    var newPerson = new Person
    {
        FirstName = Person.FirstName,
        LastName = Person.LastName,
        Email = Person.Email,
        Password = Person.Password
    };

    Persons.Add(newPerson);
    Person.ClearFields();
}

完成以上修改后,CollectionView就能正确显示每个Person的属性,且清空输入框不会影响已添加到列表中的数据。

内容的提问来源于stack exchange,提问作者Bob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 05:32:47