如何解决ObservableCollections 尚未在 MAUI 中工作?
我用 ObservableCollection
尝试了 MAUI 和 MVVM。
- 创建新的 MAUI 项目
- 添加了带有
BindingContext
的 ViewModel - 将
StackLayout
绑定到ObservableCollection
- 通过单击按钮将项目添加到集合中
没有任何变化。 “Foo”和“Bar”仍然在这里,尽管在按钮点击时添加了第三个元素。
我的项目:
用
替换(默认)新项目中的第一个标签<StackLayout
Grid.Row="0"
BindableLayout.ItemsSource="{Binding Foo}">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Label Text="{Binding .}"/>
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>
已添加
<ContentPage.BindingContext>
<local:MainPageViewModel/>
</ContentPage.BindingContext>
视图模型:
public class MainPageViewModel
{
public ObservableCollection<string> Foo { get; } = new() { "Foo","Bar" };
}
在按钮单击中添加(添加为第一个元素以避免由于 UI 高度问题而丢失更改,但当我尝试 Add() 时没有任何更改):
(this.BindingContext as MainPageViewModel).Foo.Insert(0,"Baz");
如果 ObservableCollections 应该已经可以工作,是否有任何信息? 或者(来自 WPF)我必须为 MAUI/Xamarin 更改某些内容吗?
解决方法
我已尝试重现您所看到的内容,并且 100% 可以。初始值显示,但在添加内容时不显示。但是,检查实时可视化树,我们看到 Label
确实被添加了。 ObservableCollection
有效,但布局似乎没有更新。
即使调用在 StackLayout
上强制布局,它似乎也不会更新,因此此时布局似乎无法正常工作。
看看 roadmap 还有一些布局工作要做,它可能会在预览 7 中修复。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。