在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → Xamvvm框架介绍:轻量级的.Net MVVM框架,兼容Xamarin.Forms

Xamvvm框架介绍:轻量级的.Net MVVM框架,兼容Xamarin.Forms

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:2.34M
  • 下载次数:2
  • 浏览次数:33
  • 发布时间:2024-04-07
  • 实例类别:一般编程问题
  • 发 布 人:chenxiaolan
  • 文件格式:.zip
  • 所需积分:2
 相关标签:

实例介绍

【实例简介】
Xamvvm是一款为Xamarin.Forms设计的MVVM框架,它以其简单、快速和轻量级著称,通过流畅的API使得开发过程更加便捷。

功能特点:
- 使用非常简单,只需标记页面/模型即可
- 以PageModel为导向的导航
- 自动绑定BindingContext(PageModels)
- 页面/页面模型缓存,提升UI响应速度
- 不限于任何具体的页面、页面模型实现
- 流畅风格的扩展方法,减少代码编写
- ContentView内的导航
- 提供INotifyPropertyChanged实现的辅助类,例如BasePageModel
- 页面有覆盖方法来响应/拦截导航
- 类型安全的类/方法/消息传递
- 防止未完成执行时多次执行的无依赖ICommand实现

快速开始:
初始化框架只需创建IBaseFactory实现的实例,并将其设置为当前使用的工厂即可。
示例代码:
var factory = new XamvvmFormsFactory(this);
XamvvmCore.SetCurrentFactory(factory);
这样就完成了初始化。PageFactory会在启动时扫描你的程序集,并根据你页面上的IBasePage定义将页面和页面模型链接起来。

页面模型优先的导航:
所有推送和弹出操作都是从PageModel进行,而不是从页面。
示例代码:
var pageToPush = this.GetPageFromCache<DetailPageModel>();
await this.PushPageAsync(pageToPush);
你也可以在显示页面前执行一个动作。

【实例截图】
【核心代码】
文件清单
└── xamvvm-e3e38ff88ca998601c779d1f1bd60b0dd988f0a7
    ├── appveyor.yml
    ├── examples
    │   ├── ExamplesForms
    │   │   ├── Droid
    │   │   │   ├── Assets
    │   │   │   │   └── AboutAssets.txt
    │   │   │   ├── Examples.Droid.csproj
    │   │   │   ├── Examples.Droid.csproj.bak
    │   │   │   ├── MainActivity.cs
    │   │   │   ├── packages.config
    │   │   │   ├── Properties
    │   │   │   │   ├── AndroidManifest.xml
    │   │   │   │   └── AssemblyInfo.cs
    │   │   │   └── Resources
    │   │   │       ├── AboutResources.txt
    │   │   │       ├── drawable
    │   │   │       │   └── icon.png
    │   │   │       ├── drawable-hdpi
    │   │   │       │   └── icon.png
    │   │   │       ├── drawable-xhdpi
    │   │   │       │   └── icon.png
    │   │   │       ├── drawable-xxhdpi
    │   │   │       │   └── icon.png
    │   │   │       ├── layout
    │   │   │       │   ├── Tabbar.axml
    │   │   │       │   └── Toolbar.axml
    │   │   │       └── values
    │   │   │           └── styles.xml
    │   │   ├── Examples
    │   │   │   ├── App.xaml
    │   │   │   ├── App.xaml.cs
    │   │   │   ├── Examples.csproj
    │   │   │   ├── FodyWeavers.xml
    │   │   │   ├── Pages
    │   │   │   │   ├── DemoListViewPageModel.cs
    │   │   │   │   ├── DemoListViewPage.xaml
    │   │   │   │   ├── DemoListViewPage.xaml.cs
    │   │   │   │   ├── DetailPageModel.cs
    │   │   │   │   ├── DetailPage.xaml
    │   │   │   │   ├── DetailPage.xaml.cs
    │   │   │   │   ├── MainNavigationPageModel.cs
    │   │   │   │   ├── MainPageModel.cs
    │   │   │   │   ├── MainPage.xaml
    │   │   │   │   ├── MainPage.xaml.cs
    │   │   │   │   ├── SampleMasterDetailMenuPageModel.cs
    │   │   │   │   ├── SampleMasterDetailMenuPage.xaml
    │   │   │   │   ├── SampleMasterDetailMenuPage.xaml.cs
    │   │   │   │   ├── SampleMasterDetailPage.cs
    │   │   │   │   ├── SampleMasterDetailPageModel.cs
    │   │   │   │   ├── SampleNavigationViewNavigation.cs
    │   │   │   │   ├── SampleNavigationViewPageModel.cs
    │   │   │   │   ├── SampleNavigationViewPage.xaml
    │   │   │   │   └── SampleNavigationViewPage.xaml.cs
    │   │   │   └── Views
    │   │   │       ├── SampleFirstViewModel.cs
    │   │   │       ├── SampleFirstView.xaml
    │   │   │       ├── SampleFirstView.xaml.cs
    │   │   │       ├── SampleSecondViewModel.cs
    │   │   │       ├── SampleSecondView.xaml
    │   │   │       └── SampleSecondView.xaml.cs
    │   │   ├── iOS
    │   │   │   ├── AppDelegate.cs
    │   │   │   ├── Assets.xcassets
    │   │   │   │   ├── AppIcon.appiconset
    │   │   │   │   │   └── Contents.json
    │   │   │   │   └── Contents.json
    │   │   │   ├── Entitlements.plist
    │   │   │   ├── Examples.iOS.csproj
    │   │   │   ├── Info.plist
    │   │   │   ├── LaunchScreen.storyboard
    │   │   │   ├── Main.cs
    │   │   │   └── packages.config
    │   │   └── WinUWP
    │   │       ├── App.xaml
    │   │       ├── App.xaml.cs
    │   │       ├── Assets
    │   │       │   ├── LockScreenLogo.scale-200.png
    │   │       │   ├── SplashScreen.scale-200.png
    │   │       │   ├── Square150x150Logo.scale-200.png
    │   │       │   ├── Square44x44Logo.scale-200.png
    │   │       │   ├── Square44x44Logo.targetsize-24_altform-unplated.png
    │   │       │   ├── StoreLogo.png
    │   │       │   └── Wide310x150Logo.scale-200.png
    │   │       ├── ExamplesForms.Win_TemporaryKey.pfx
    │   │       ├── Examples.Windows.csproj
    │   │       ├── Examples.Windows.nuget.targets
    │   │       ├── MainPage.xaml
    │   │       ├── MainPage.xaml.cs
    │   │       ├── Package.appxmanifest
    │   │       ├── project.json
    │   │       ├── project.lock.json
    │   │       └── Properties
    │   │           ├── AssemblyInfo.cs
    │   │           └── Default.rd.xml
    │   ├── ExamplesFormsRxUI
    │   │   ├── ExamplesRxUI
    │   │   │   ├── App.xaml
    │   │   │   ├── App.xaml.cs
    │   │   │   ├── ExamplesRxUI.csproj
    │   │   │   └── Pages
    │   │   │       ├── DemoListViewPageModel.cs
    │   │   │       ├── DemoListViewPage.xaml
    │   │   │       └── DemoListViewPage.xaml.cs
    │   │   ├── ExamplesRxUI.Droid
    │   │   │   ├── Assets
    │   │   │   │   └── AboutAssets.txt
    │   │   │   ├── ExamplesRxUI.Droid.csproj
    │   │   │   ├── ExamplesRxUI.Droid.csproj.bak
    │   │   │   ├── MainActivity.cs
    │   │   │   ├── packages.config
    │   │   │   ├── Properties
    │   │   │   │   ├── AndroidManifest.xml
    │   │   │   │   └── AssemblyInfo.cs
    │   │   │   └── Resources
    │   │   │       ├── AboutResources.txt
    │   │   │       ├── drawable
    │   │   │       │   └── icon.png
    │   │   │       ├── drawable-hdpi
    │   │   │       │   └── icon.png
    │   │   │       ├── drawable-xhdpi
    │   │   │       │   └── icon.png
    │   │   │       ├── drawable-xxhdpi
    │   │   │       │   └── icon.png
    │   │   │       ├── layout
    │   │   │       │   ├── Tabbar.axml
    │   │   │       │   └── Toolbar.axml
    │   │   │       └── values
    │   │   │           └── styles.xml
    │   │   ├── ExamplesRxUI.iOS
    │   │   │   ├── AppDelegate.cs
    │   │   │   ├── Entitlements.plist
    │   │   │   ├── ExamplesRxUI.iOS.csproj
    │   │   │   ├── Info.plist
    │   │   │   ├── iTunesArtwork
    │   │   │   ├── iTunesArtwork@2x
    │   │   │   ├── Main.cs
    │   │   │   ├── packages.config
    │   │   │   ├── Properties
    │   │   │   │   └── AssemblyInfo.cs
    │   │   │   └── Resources
    │   │   │       ├── Default@2x.png
    │   │   │       ├── Default-568h@2x.png
    │   │   │       ├── Default.png
    │   │   │       ├── Default-Portrait@2x.png
    │   │   │       ├── Default-Portrait.png
    │   │   │       ├── Icon-60@2x.png
    │   │   │       ├── Icon-60@3x.png
    │   │   │       ├── Icon-76@2x.png
    │   │   │       ├── Icon-76.png
    │   │   │       ├── Icon-Small@2x.png
    │   │   │       ├── Icon-Small@3x.png
    │   │   │       ├── Icon-Small-40@2x.png
    │   │   │       ├── Icon-Small-40@3x.png
    │   │   │       ├── Icon-Small-40.png
    │   │   │       ├── Icon-Small.png
    │   │   │       └── LaunchScreen.storyboard
    │   │   └── ExamplesRxUI.UWP
    │   │       ├── App.xaml
    │   │       ├── App.xaml.cs
    │   │       ├── Assets
    │   │       │   ├── LockScreenLogo.scale-200.png
    │   │       │   ├── SplashScreen.scale-200.png
    │   │       │   ├── Square150x150Logo.scale-200.png
    │   │       │   ├── Square44x44Logo.scale-200.png
    │   │       │   ├── Square44x44Logo.targetsize-24_altform-unplated.png
    │   │       │   ├── StoreLogo.png
    │   │       │   └── Wide310x150Logo.scale-200.png
    │   │       ├── ExampleRxUI.UWP.csproj
    │   │       ├── ExampleRxUI.UWP.nuget.targets
    │   │       ├── MainPage.xaml
    │   │       ├── MainPage.xaml.cs
    │   │       ├── Package.appxmanifest
    │   │       ├── project.json
    │   │       ├── project.lock.json
    │   │       ├── Properties
    │   │       │   ├── AssemblyInfo.cs
    │   │       │   └── Default.rd.xml
    │   │       └── Windows_TemporaryKey.pfx
    │   └── ExampleUnitTests.Droid
    │       ├── Assets
    │       │   └── AboutAssets.txt
    │       ├── ExampleUnitTests.Droid.csproj
    │       ├── ExampleUnitTests.Droid.csproj.bak
    │       ├── MainActivity.cs
    │       ├── MainActivity.cs.txt
    │       ├── packages.config
    │       ├── Properties
    │       │   ├── AndroidManifest.xml
    │       │   └── AssemblyInfo.cs
    │       ├── Resources
    │       │   ├── AboutResources.txt
    │       │   ├── drawable
    │       │   │   └── Icon.png
    │       │   ├── layout
    │       │   │   └── Main.axml
    │       │   └── values
    │       │       └── Strings.xml
    │       └── ViewModelUnitTest.cs
    ├── GitLink.exe
    ├── LICENSE
    ├── MakefileAll.bat
    ├── README.md
    └── source
        ├── Xamvvm.Core
        │   ├── Attributes
        │   │   └── DisableCacheAttribute.cs
        │   ├── Exceptions
        │   │   ├── NoPageForPageModelRegisteredException.cs
        │   │   ├── PageTypeNotRegisteredInIOCException.cs
        │   │   └── XamvvmException.cs
        │   ├── Extensions
        │   │   ├── CachingExtensions.cs
        │   │   ├── LoggingExtensions.cs
        │   │   ├── NavigationExtensions.cs
        │   │   ├── PageExtensions.cs
        │   │   └── PageModelExtensions.cs
        │   ├── Implementations
        │   │   ├── BaseCommand.cs
        │   │   ├── BaseLogger.cs
        │   │   ├── BaseModel.cs
        │   │   ├── BaseNotifyPropertyChanged.cs
        │   │   ├── BasePageModel.cs
        │   │   └── BaseViewModel.cs
        │   ├── Interfaces
        │   │   ├── IBaseCommand.cs
        │   │   ├── IBaseFactoryCaching.cs
        │   │   ├── IBaseFactory.cs
        │   │   ├── IBaseFactoryNavigation.cs
        │   │   ├── IBaseLogger.cs
        │   │   ├── IBasePage.cs
        │   │   ├── IBasePageModel.cs
        │   │   ├── IBaseView.cs
        │   │   ├── IBaseViewModel.cs
        │   │   ├── INavigationInterceptors.cs
        │   │   └── IPageVisibilityChange.cs
        │   ├── IoC
        │   │   ├── IXamvvmIoC.cs
        │   │   ├── SimpleXamvvmIoC.cs
        │   │   ├── TinyIoC.cs
        │   │   └── XamvvmIoC.cs
        │   ├── XamvvmCore.cs
        │   └── Xamvvm.Core.csproj
        ├── Xamvvm.Core.nuspec.template
        ├── Xamvvm.Forms
        │   ├── Behaviors
        │   │   ├── BaseBehavior.cs
        │   │   └── BaseEventToCommandBehavior.cs
        │   ├── Extensions
        │   │   └── ApplicationExtensions.cs
        │   ├── Factory
        │   │   ├── FactoryCaching.cs
        │   │   ├── Factory.cs
        │   │   ├── FactoryNavigation.cs
        │   │   └── XamvvmFormsFactory.cs
        │   ├── Pages
        │   │   ├── BaseCarouselPage.cs
        │   │   ├── BaseMasterDetailPage.cs
        │   │   ├── BaseNavigationPage.cs
        │   │   └── BaseTabbedPage.cs
        │   ├── Views
        │   │   ├── IViewNavigation.cs
        │   │   └── ViewNavigation.cs
        │   └── Xamvvm.Forms.csproj
        ├── Xamvvm.Forms.nuspec.template
        ├── Xamvvm.Forms.RxUI
        │   ├── IBasePageRxUI.cs
        │   ├── Implementations
        │   │   ├── BaseContentPageRxUI.cs
        │   │   ├── BaseMasterDetailPageRxUI.cs
        │   │   ├── BaseNavigationPageRxUI.cs
        │   │   ├── BasePageModelRxUI.cs
        │   │   └── BaseTabbedPageRxUI.cs
        │   ├── Xamvvm.Forms.RxUI.csproj
        │   └── XamvvmFormsRxUIFactory.cs
        ├── Xamvvm.Forms.RxUI.nuspec.template
        ├── Xamvvm.Mock
        │   ├── Factory
        │   │   ├── ActionResults.cs
        │   │   ├── FactoryCaching.cs
        │   │   ├── Factory.cs
        │   │   ├── FactoryNavigation.cs
        │   │   └── XamvvmMockFactory.cs
        │   ├── MockPage.cs
        │   ├── MyClass.cs
        │   └── Xamvvm.Mock.csproj
        ├── Xamvvm.Mock.nuspec.template
        ├── Xamvvm.sln
        └── XamvvmTemplatePack.VSMac
            ├── ItemTemplates
            │   ├── CustomContentPageModel.cs
            │   ├── CustomContentPage.xaml
            │   ├── CustomContentPage.xaml.cs
            │   ├── CustomContentPage.xft.xml
            │   ├── CustomContentViewModel.cs
            │   ├── CustomContentView.xaml
            │   ├── CustomContentView.xaml.cs
            │   └── CustomContentView.xft.xml
            ├── packages.config
            ├── Properties
            │   ├── AddinInfo.cs
            │   ├── AssemblyInfo.cs
            │   └── Manifest.addin.xml
            └── XamvvmTemplatePack.VSMac.csproj

69 directories, 235 files

标签:

实例下载地址

Xamvvm框架介绍:轻量级的.Net MVVM框架,兼容Xamarin.Forms

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警