一、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. PHP清理跨站XSS xss_clean 函数 整理自codeigniter Security
  2. 在线代码编辑器CodeMirror简介
  3. CSS-论css如何纯代码实现内凹圆角
  4. .Net项目版本号的生成
  5. 在Windows系统中安装集成的PHP开发环境
  6. javaweb之session过期验证
  7. jQuery源码学习(2):选择器初窥
  8. [内存管理]管理图解v0.1 v0.2 v0.3
  9. 【JAVA零基础入门系列】Day14 Java对象的克隆
  10. HDU 4333 Revolving Digits [扩展KMP]【学习笔记】
  11. 内核模块中filp-&gt;open对文件的读写【转】
  12. [Swift]LeetCode304. 二维区域和检索 - 矩阵不可变 | Range Sum Query 2D - Immutable
  13. spring 事务关键类
  14. 让overflow:auto页面滚动条出现时不跳动
  15. UVA1025 城市里的间谍
  16. 菜菜小问题——python中print函数 以及单引号、双引号、三引号
  17. 【刷题】LOJ 2818 「eJOI2018」循环排序
  18. Snmp学习总结(六)——linux下安装和配置SNMP
  19. css3整理--border-radius
  20. BZOJ 50题纪念?

热门文章

  1. HDU 5641
  2. [rsync]rsync设定及错误处理
  3. 如何更有效使用 Rational AppScan 扫描大型网站,第 2 部分: 案例分析
  4. 轮廓算法的结果验证工具/How to validate the outline output
  5. [技巧篇]06.关于防止SQL注入的方式,不使用预处理
  6. 51Nod 1010 只包含因子2 3 5的数 | 预处理+二分
  7. 【BZOJ】2679: [Usaco2012 Open]Balanced Cow Subsets
  8. 【比赛】洛谷夏令营NOIP模拟赛
  9. 【转载】VS2013安装需要IE10
  10. Tomcat8利用Redis配置Session共享