我尝试了 MAUI 和 MVVM 与ObservableCollection
.
- 创建新的 MAUI 项目
- 添加了 ViewModel
BindingContext
- 绑定
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 更改一些内容吗?