我是**.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内部的信息也会正确存储,那么为什么会出现这种奇怪的行为呢?
1条答案
按热度按时间xwmevbvl1#
问题与MAUI和MVVM中的数据绑定有关。
您可以使用
ObservableCollection<MyCustomModel>
而不是List<MyCustomModel>
。对集合的任何更改都应该反映在您的UI中。问题可能是你的 List 是不可观察的,你没有为它触发任何 PropertyChanged 事件。ObservableCollection 为你处理这个问题。