Xamarin Forms+ReactiveUI中ViewModel数据未绑定到视图问题
根因分析
绑定失效、ViewModel未激活的核心问题出在你的ViewModel定义上:
DashboardViewModel被标记为abstract抽象类,抽象类无法被实例化。Prism依赖注入容器、ReactiveUI的视图-ViewModel关联逻辑都无法创建该类的实例,WhenActivated里的绑定逻辑自然不会执行,也不会有任何数据推送到UI。- 绑定属性未实现属性变更通知,即使ViewModel能正常实例化,后续属性值变更时UI也无法收到更新触发。
修复方案
- 移除
DashboardViewModel类声明上的abstract修饰符,保证类可以被正常实例化。 - 改写绑定属性的实现,使用ReactiveUI标准的属性通知写法,确保变更能同步到UI。
- 确认Prism依赖注入容器中已正确注册该ViewModel,导航时使用Prism的导航接口跳转页面,不要手动实例化View或ViewModel。
修正后的ViewModel代码
using Prism.Navigation; using RoutinesTracker.Core.Layout.ViewModels; namespace RoutinesTracker.Pages.Dashboard { public class DashboardViewModel : ViewModelBase { private string[] _exampleCollectionList; public string[] ExampleCollectionList { get => _exampleCollectionList; set => this.RaiseAndSetIfChanged(ref _exampleCollectionList, value); } public DashboardViewModel(INavigationService navigationService) : base(navigationService) { ExampleCollectionList = new[] { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; } } }
你贴出的XAML布局、View后台的绑定写法本身没有问题,完成上述修改后重新运行即可正常展示列表数据。
内容的提问来源于stack exchange,提问作者user16449282
相关产品推荐
相关产品推荐

