一、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吧

最新文章

  1. 面向科学计算的Python IDE--Anaconda
  2. js-倒计时自动隐藏
  3. iOS开发:正则表达式
  4. PDO连接mysql和pgsql数据库
  5. Workspace defines a VM that does not contain a valid jre/lib/rt.jar: C:\Program Files\Java\jre7
  6. 使用Html5+C#+微信 开发移动端游戏详细教程:(六)游戏界面布局与性能优化
  7. Nuget的使用命令
  8. centos python nginx uwsgi
  9. node js 常用模块
  10. JavaScript- The Good Parts Chapter 6
  11. 没有找到MSVCR100.dll解决方法
  12. Laravel框架——增删改查
  13. UIApplication相关
  14. AF_INET 和PF_INET区别;AF_LOCAL PF_LOCAL 区别.
  15. spring aop 切面编程中获取具体方法的方法
  16. c#实现RGB字节数组生成图片
  17. 深度理解C# 的执行原理
  18. python Pipe 双管道通信
  19. POJ 1417 - True Liars - [带权并查集+DP]
  20. MySQLdb &amp; pymsql

热门文章

  1. 【Shell脚本学习19】Shell while循环
  2. onInterceptTouchEvent和onTouchEvent举例分析
  3. Oracle数据库SQL优化
  4. git之添加ssh
  5. Matlab之cell使用
  6. android菜鸟学习笔记7----android布局(二)
  7. ueditor 单独图片上传 转载
  8. 解决ASP.NET MVC3与FusionCharts乱码问题
  9. jqure 获取地址栏的参数
  10. SharpMap V1.1 For Web教程系列之——前言