一、Xamarin.Forms 不使用框架时的绑定

需要注意的是BindingContent,不是DataContent

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="cal-namespace:XamarinDemo.ViewModels;assembly=XamarinDemo"
x:Class="XamarinDemo.Views.MainView"
BindingContent="{StaticResource MainViewModel}">
<ContentPage.Resources>
<ResourceDictionary>
<local:MainViewModel x:Key="MainViewModel"/>
</ResourceDictionary>
</ContentPage.Resources>
</ContentPage>

二、Xamarin.Forms 使用MvvmLight时的绑定

首先加一个ViewModelLocator

public class ViewModelLocator
{
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<MainViewModel>();
} [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
"CA1822:MarkMembersAsStatic",
Justification = "This non-static member is needed for data binding purposes.")]
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
} [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
"CA1822:MarkMembersAsStatic",
Justification = "This non-static member is needed for data binding purposes.")]
public static void Cleanup()
{
ServiceLocator.Current.GetInstance<LoginViewModel>().Cleanup();
}
}

MainViewModel

public class MainViewModel : ViewModelBase
{
}

App.cs,默认的那几个方法应该是没用了

public class App : Application
{
public App()
{
_locator = new ViewModelLocator();
MainPage = GetMainPage();
} private static ViewModelLocator _locator;
public static ViewModelLocator Locator
{
get
{
return _locator ?? (_locator = new ViewModelLocator());
}
} public static Page GetMainPage()
{
return new MainView();
}
}

MainView,这里的BindingContext的Source 绑定的是App.cs 里的ViewModelLocator属性

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:vm="clr-namespace:XamarinDemo;assembly=XamarinDemo"
x:Class="XamarinDemo.Views.MainView"
BindingContext="{Binding Main, Source={x:Static vm:App.Locator}}">
</ContentPage>

到了这里,我也觉得MvvmLight还是有好多要自己去实现的东西,所以打算放弃MvvmLight之旅了

没有Views和ViewModels 文件夹下名字相同的自动绑定,App里要每个页面都写一次,好烦的,不然就要自己封装一个类

恰巧看到园子里的一个大神用的C.M写的一个成品App,而WPF平台我也用的C.M,所以打算回归C.M了,之前C.M刚突出的时候我记得支持的不全,现在貌似是全的了,所以还是用熟悉的C.M吧

MvvmLight for Xamarin.Forms的更多相关文章

  1. 走进 MvvmLight for Xamarin.Forms

    一.Xamarin.Forms 不使用框架时的绑定 需要注意的是BindingContent,不是DataContent <ContentPage xmlns="http://xama ...

  2. Xamarin.Forms入门学习路线

    Xamarin 介绍 Xamarin是一套跨平台解决方案,目的是使用C#语言创造原生的iOS,Android,Mac和Windows应用. Xamarin的三个优势: Xamarin App拥有原生A ...

  3. Xamarin.Forms 开发资源集合(复制)

    复制:https://www.cnblogs.com/mschen/p/10199997.html 收集整理了下 Xamarin.Forms 的学习参考资料,分享给大家,稍后会不断补充: UI样式 S ...

  4. Xamarin.Forms 开发资源集合

    收集整理了下 Xamarin.Forms 的学习参考资料,分享给大家,稍后会不断补充: UI样式 Snppts: Xamarin Forms UI Snippets. Prebuilt Templat ...

  5. xamarin.forms新建项目android编译错误

    vs2015 update3 新建的xamarin.forms项目中的android项目编译错误.提示缺少android_m2repository_r22.zip,96659D653BDE0FAEDB ...

  6. Xamarin.Forms 简介

    An Introduction to Xamarin.Forms 来源:http://developer.xamarin.com/guides/cross-platform/xamarin-forms ...

  7. Xamarin.Forms 免费电子书

    Xamarin Evolve 正在举行,现在已经放出2本免费的Xamarin.Forms 免费电子书,据现场的同学说这两天还有Xamarin.Forms 重磅消息发布: Creating Mobile ...

  8. 老司机学新平台 - Xamarin Forms开发框架之MvvmCross插件精选

    在前两篇老司机学Xamarin系列中,简单介绍了Xamarin开发环境的搭建以及Prism和MvvmCross这两个开发框架.不同的框架,往往不仅仅使用不同的架构风格,同时社区活跃度不同,各种功能模块 ...

  9. 老司机学新平台 - Xamarin Forms开发框架二探 (Prism vs MvvmCross)

    在上一篇Xamarin开发环境及开发框架初探中,曾简单提到MvvmCross这个Xamarin下的开发框架.最近又评估了一些别的,发现老牌Mvvm框架Prism现在也支持Xamarin Forms了, ...

随机推荐

  1. iOS UIimage初始化时的两种方法

    第一种方式:UIImage *image = [UIImage imageNamed:@"image"]; 使用这种方式,第一次读取的时候,先把这个图片存到缓存里,下次再使用时直接 ...

  2. Oracle基础 shutdown和startup

    一.shutdown命令:SHUTDOWN有四个参数:NORMAL.TRANSACTIONAL.IMMEDIATE.ABORT.缺省不带任何参数时表示是NORMAL. SHUTDOWN NORMAL: ...

  3. Sublime Text shift+ctrl妙用

    1 :按住shift+ctrl然后按←或→可快速选中一行中的某一部分,相当于双击鼠标选中. 当你想在代码末尾加注释的话,这个方法很好用 输入文字->光标移到文字末尾->按住shift+ct ...

  4. linux初学 :linux 常用命令(二)

    压缩和解压命令 gzip/guzip   zip/unzip   tar gzip和gunzip一般可用参数是-r,例: gzip test.txt 压缩文件 gzip -r test 压缩所有tes ...

  5. Mail搭建

    Mail搭建 一.本章结构 1.postfix概念与原理 2.postfix配置文件解析 3.邮件服务器端配置与客户端使用 4.垃圾邮件过滤 5.邮件自动回复 二.邮件服务器概述 1.邮件服务器概念 ...

  6. Kinect For Windows V2开发日志一:开发环境的配置

    算是正式进军Kinect了,前段时间学的东西现在就忘了,于是从此开始记录一下. 目前为止大部分的学习资料来自于Heresy的博客,写的非常优秀,清晰明了,十分感谢.开发语言为C++,应该会一直使用,但 ...

  7. Python-Networkx

    import networkx #建图 G = networkx.Graph() #节点数: len(G) #边数 G.number_of_edges() #节点表 G.nodes() #边表 G.e ...

  8. 转:eclipse怎样修改包(package)的显示样式、格式 工具/原料

    转:http://blog.csdn.net/longyaxx258/article/details/50774128 eclipse 打开我们的项目,可以看到左侧的package看上去特别多,没有层 ...

  9. C# 新特性 dynamic的使用及扩展

    个人而言感觉C#的dynamic是一个特别实用的东西,为日常开发工作中的封装,数据传递等带来了很高的可扩展性. C#4.0中通过对数据类型后期绑定的支持,演化出了dynamic.任何直接声明为这种类型 ...

  10. 【转】C#之继承

    本文意在巩固基础知识,并不是对其进行深入剖析,如若对各位高手没有什么作用,请绕过. 本文为原创文,所有示例均是博主测试过的,欢迎大家批评指正,如有转载请标明出处,谢谢. 继承.封装和多态是面向对象编程 ...