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

vecaoik1  于 2023-11-14  发布在  .NET
关注(0)|答案(1)|浏览(135)

我是**.NET MAUI生态系统的新手,我正在开发一个遵循MVVM模式的应用程序,我得到了一个绑定到某个视图的视图模型**。我得到了一个自定义模型MyCustomModel,其中有一堆公共字符串属性,在我的视图模型中,我得到了一个MyCustomModel对象的列表,所以在我的视图模型中的这个列表属性上有类似ListCustomList的东西,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内部的信息也会正确存储,那么为什么会出现这种奇怪的行为呢?

xwmevbvl

xwmevbvl1#

问题与MAUI和MVVM中的数据绑定有关。
您可以使用ObservableCollection<MyCustomModel>而不是List<MyCustomModel>。对集合的任何更改都应该反映在您的UI中。
问题可能是你的 List 是不可观察的,你没有为它触发任何 PropertyChanged 事件。ObservableCollection 为你处理这个问题。

相关问题