ObservableCollections 在 MAUI 中还没有工作?
ObservableCollections not working yet in MAUI?
我尝试了 MAUI 和 MVVM ObservableCollection
。
- 创建了新的 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 中得到修复。
我尝试了 MAUI 和 MVVM ObservableCollection
。
- 创建了新的 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 中得到修复。