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

.NET MAUI中ListView动态更新List后无法正常渲染问题求助

解决.NET MAUI中ListView动态添加元素后空白的问题

问题原因

你遇到的核心问题是**List<T>不支持集合变更通知**:

  • 虽然你已经实现了INotifyPropertyChanged接口,但它只能监听单个属性的赋值变化,无法感知集合内部元素的增删操作。
  • 初始状态下集合有1个元素能正常显示,是因为ListView在绑定初始化时读取了集合的当前状态;但动态添加元素时,List<T>不会向UI发送任何变更通知,导致UI无法更新,甚至触发绑定机制异常出现空白。

解决方案

改用ObservableCollection<T>替代List<T>,这个集合类型内置实现了INotifyCollectionChanged接口,会在元素增删、集合重置时自动通知UI刷新。

具体修改步骤

  1. 替换集合类型:在ViewModel中,将List<MyCustomModel>类型的属性改为ObservableCollection<MyCustomModel>,需引入System.Collections.ObjectModel命名空间。
  2. 初始化集合:在ViewModel构造函数中初始化集合,避免空引用。
  3. 统一绑定路径:检查XAML中ItemsSource="{Binding Containers}"的绑定名称,确保和ViewModel中的属性名完全匹配(你提到ViewModel里是CustomList,但XAML绑定的是Containers,这里需修正名称统一)。

修改后的ViewModel示例代码

using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Runtime.CompilerServices;

public class YourViewModel : INotifyPropertyChanged
{
    private ObservableCollection<MyCustomModel> _containers;
    public ObservableCollection<MyCustomModel> Containers
    {
        get => _containers;
        set
        {
            _containers = value;
            OnPropertyChanged();
        }
    }

    public YourViewModel()
    {
        // 初始化ObservableCollection
        Containers = new ObservableCollection<MyCustomModel>();
    }

    // 动态添加元素的方法
    public void AddNewContainer()
    {
        Containers.Add(new MyCustomModel
        {
            Container_Number = "CN-001",
            Container_Quantity = "5",
            Item_Description = "Sample Item"
        });
    }

    // 已实现的PropertyChanged逻辑
    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

补充说明

  • 使用ObservableCollection时,不需要手动触发PropertyChanged来通知集合变更,元素增删操作会自动触发UI刷新。
  • 如果需要批量更新集合,可使用Clear()清空后批量添加,或直接重新赋值整个集合(此时仍需触发PropertyChanged)。

内容的提问来源于stack exchange,提问作者taqasar-elcam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:57:45