.NET MAUI 视图无法正确呈现列表

.NET MAUI View does not render properly a List

提问人:taqasar-elcam 提问时间:11/7/2023 最后编辑:taqasar-elcam 更新时间:11/7/2023 访问量:42

问:

我是 .NET MAUI 生态系统的新手,我正在开发一个遵循 MVVM 模式的应用程序,我得到了一个绑定到某个视图的视图模型。我得到了一个带有一堆公共字符串属性的自定义模型 MyCustomModel,在我的视图模型中,我得到了一个 MyCustomModel 对象列表,因此在我的视图模型中,此列表属性上的 List<MyCustomModel>CustomList 之类的东西,PropertyChanged 方法都实现了。我得到了一个应该显示 CustomList 内部元素的视图,该视图如下所示:

<ListView ItemsSource="{Binding Containers}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout Padding="10">
                    <Label Text="{Binding Container_Number}" FontAttributes="Bold" />
                    <Label Text="{Binding Container_Quantity}" />
                    <Label Text="{Binding Item_Description}" />
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

视图模型中的 CustomList 通过一个函数动态更新,该函数通过 CustomList.Add(MyCustomModel 的新元素)将新对象附加到列表中。发生在我身上的奇怪事情是,如果 CustomList 只有 1 个元素,那么 CustomList.Count == 1 那么视图中的 xaml 会正确显示信息(所以在这种情况下,在视图工作的情况下,我只手动添加一个元素,仅此而已,方法中没有 CustomList 的动态更新)但是一旦 Add 方法通过函数动态添加新对象,那么 Custom.Count 就不再 == 1但是> 1 时,页面是空白的,视图不会呈现适当的数据。

我确定问题出在视图内部,因为调试和执行一些System.Console.Write我看到每次调用该函数时CustomList.Count都会递增,并且CustomList中的信息也正确存储,那么为什么会有这种奇怪的行为?

C# .NET XAML 移动 毛伊

评论

0赞 Julian 11/7/2023
请显示定义列表的代码以及如何更新列表。将项添加到数据绑定中使用的列表时,任何更新都需要通过 PropertyChanged 通知进行传播。Containers

答:

1赞 Julian 11/7/2023 #1

该问题与 MAUI 和 MVVM 中的数据绑定有关。

您可以使用代替 .然后,对集合所做的任何更改都应反映在 UI 中。ObservableCollection<MyCustomModel>List<MyCustomModel>

问题可能是你的 List 不可观察,并且你没有为其触发任何 PropertyChanged 事件。ObservableCollection 会为您处理此问题。