Xamarin.Forms中Page与View的区别及MVVM关联逻辑的确认问询
Xamarin.Forms中Page与View的区别及MVVM关联说明
核心区别
- Page是顶层页面容器:它是Xamarin.Forms中最顶层的可视化单元,代表一个完整的屏幕(比如
ContentPage、NavigationPage),拥有独立的页面生命周期(如OnAppearing、OnDisappearing回调),是导航系统的基本单位。 - View是UI控件/组件:是构成页面内容的基础元素,比如
Button、Label这类原生控件,或是你封装的自定义复用组件(比如带筛选栏的列表组件),它没有独立生命周期,必须依附于Page或其他容器类View才能显示。
关于MVVM中ViewModel的关联
你的理解存在错误:Page同样可以(且通常会)关联ViewModel,在MVVM模式里,Page作为页面级的View载体,是绑定页面级ViewModel的核心对象。比如:
- 在代码中设置:
BindingContext = new HomePageViewModel(); - 或在XAML中直接声明:
<ContentPage.BindingContext> <local:HomePageViewModel/> </ContentPage.BindingContext>
自定义View关联ViewModel的场景,一般是这个View是具备独立业务逻辑的复用组件(比如购物车条目组件绑定CartItemViewModel),但这不是硬性要求——很多简单View可以直接绑定所属Page的ViewModel中的属性。
总结
- Page是独立的屏幕级容器,有专属生命周期;View是页面内的UI元素,无独立生命周期,依赖Page存在。
- Page和View都可关联ViewModel,Page通常绑定全局页面级ViewModel,自定义View可绑定自身子ViewModel或复用Page的ViewModel。
内容的提问来源于stack exchange,提问作者w4rcT
相关产品推荐
相关产品推荐

