1、Xamarin.Forms 不使用框架時的綁定框架
須要注意的是BindingContent,不是DataContentide
<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>
2、Xamarin.Forms 使用MvvmLight時的綁定spa
首先加一個ViewModelLocatororm
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(); } }
MainViewModelxml
public class MainViewModel : ViewModelBase { }
App.cs,默認的那幾個方法應該是沒用了blog
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屬性get
<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之旅了io
沒有Views和ViewModels 文件夾下名字相同的自動綁定,App裏要每一個頁面都寫一次,好煩的,否則就要本身封裝一個類form
恰巧看到園子裏的一個大神用的C.M寫的一個成品App,而WPF平臺我也用的C.M,因此打算迴歸C.M了,以前C.M剛突出的時候我記得支持的不全,如今貌似是全的了,因此仍是用熟悉的C.M吧class