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

.NET MAUI中如何使用ListView展示对象列表?

.NET MAUI ListView 绑定对象列表问题解决

问题根源

你在TextCell里使用{Binding Almacenes.nombre}是错误的——当ListView绑定到Almacenes集合后,DataTemplate内部的绑定上下文已经自动切换为集合中的单个Almacenes对象,不需要再通过集合名称去访问属性。

修复步骤

1. 修正XAML中的绑定路径

把TextCell的绑定改为直接指向对象属性:

<ListView ItemsSource="{Binding Almacenes}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextCell Text="{Binding nombre}"
                      Detail="{Binding nombre}" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

2. 确保Almacenes类的属性是公共可访问的

需要保证Almacenes类的属性拥有公共getter,否则绑定无法读取值:

public class Almacenes
{
    public string id { get; set; }
    public string nombre { get; set; }
    public string cve { get; set; }
}

3. 给页面设置BindingContext

在页面的构造函数中,将ViewModel实例赋值给BindingContext,否则绑定逻辑不会生效:
在SeleccionAlmacen.xaml.cs中添加代码:

public SeleccionAlmacen()
{
    InitializeComponent();
    BindingContext = new SeleccionAlmacenViewModel();
}

完整修复后的代码示例

XAML代码:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Ventas_Citel.Views.SeleccionAlmacen"
             xmlns:viewmodel="clr-namespace:Ventas_Citel.ViewModels"
             x:DataType="viewmodel:SeleccionAlmacenViewModel"
             Title="SeleccionAlmacen">
    
    <ListView ItemsSource="{Binding Almacenes}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextCell Text="{Binding nombre}"
                          Detail="{Binding nombre}" />
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
    
</ContentPage>

ViewModel代码:

public partial class SeleccionAlmacenViewModel : ObservableObject
{
    public SeleccionAlmacenViewModel()
    {
        Almacenes = new ObservableCollection<Almacenes>
        {
            new Almacenes 
            {
                id = "1",
                nombre = "Almacen 1",
                cve = "1"
            },
                
            new Almacenes
            {
                id = "2",
                nombre = "Almacen 2",
                cve = "2"
            },
    
            new Almacenes
            {
                id = "3",
                nombre = "Almacen 3",
                cve = "3"
            }
        };
    }
    
    [ObservableProperty]
    ObservableCollection<Almacenes> almacenes;
}

Almacenes类代码:

namespace Ventas_Citel.Models // 根据你的项目实际命名空间调整
{
    public class Almacenes
    {
        public string id { get; set; }
        public string nombre { get; set; }
        public string cve { get; set; }
    }
}

完成以上修改后,ListView就能正确展示每个Almacenes对象的nombre属性,实现你想要的列表效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:55:20