Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Xamarin + MVVMCross
の
あれこれ
第5回 Japan Xamarin User Group Conference 大阪
2015/07/11
青柳臣一 @ShinichiAoyagi
自己紹介
 青柳臣一
 @ShinichiAoyagi
 職業: ソフトウエア開発(大阪 淀屋橋)
 Xamarin + ASP.NET MVC/Web API(C#) + WPF(C#)
 WPF(C#)、Windows Froms...
MVVMCross
 MVVM をサポートするライブラリ
 https://github.com/MvvmCross/MvvmCross
 MVVM 以外にも便利な機能あり
 Xamarin 専用というわけではない
MVVM
 Model – View - ViewModel
 「見た目」と「データ」と「連結部」
ビュー
iOS
ビュー
WinPhone
ビュー
Android
ビュー
WPF
ビュー
モデル
モデル
MVVMCross を使いはじめる
 NuGet でインストール
 全部のプロジェクトに
 ちょっと修正
 App1.Core → App1
 iOS
 AppDelegate.cs 変更
 Main.storyboard を消す...
MVVMCross の起動の流れ
 iOS
 AppDelegate.cs → Setup.cs → Core.App.cs
 Android
 SplashScreen(MainLauncher=true) → Setup.cs → ...
データバインディング
 ビューモデル
 MvxViewModel を継承する
 XAML で書くときと同じ
 INotifyPropertyChanged で変更通知
private string hello = "Hello Mvvm...
データバインディング.iOS
 コードで書く
 using Cirrious.MvvmCross.Binding.BindingContext;
 インテリセンスのおかげで悪くはない
 Set.Bind(control).For(c =...
データバインディング.Droid
 axml に書く
<EditText
~略~
local:MvxBind="Text Hello" />
<TextView
~略~
local:MvxBind="Text Hello" />
<Butto...
Color プラグイン
 NuGet でプラグインを入れる
 これも全部のプロジェクトに
 ViewModel
 MvxColor を使う
 View
 データバインド + ValueConverter
 iOS: set.Bin...
プラグイン (2)
 コードでよく使うのにプラットフォームで違うものたち
 ブラウザー起動
 メール起動
 ファイルアクセス
 Sqlite
 その他にもいろいろ
 https://github.com/MvvmCross/Mvv...
MvxViewModel
 ビューの遷移
 ShowViewModel<TViewModel>(new { id = “..”, flag = true });
ViewModel で
public void Init(string id,...
Mvx の IoC
 基本
 登録: Mvx.RegisterSingleton<IFoo>(new Foo());
 参照: Mvx.Resolve<IFoo>().Bar();
 Cirrious.CrossCore.IoC.Mvx...
MVVMCross の闇
 iOS のストーリーボードは?
 MvxTouchViewsContainer を継承してごにょごにょすればできた
 モーダルなウインドウは?
 ViewPresenter とかごにょごにょすればできた
 ...
MVVMCross
わかりにくいところもあるけど便利なところもおおいよ
(個人の感想です)
Nächste SlideShare
Wird geladen in …5
×

Xamarin+MVVMCross のあれこれ

1.046 Aufrufe

Veröffentlicht am

第5回 Japan Xamarin User Group Conference 大阪 「Xamarin+MVVMCross のあれこれ」のセッション資料です。

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Xamarin+MVVMCross のあれこれ

  1. 1. Xamarin + MVVMCross の あれこれ 第5回 Japan Xamarin User Group Conference 大阪 2015/07/11 青柳臣一 @ShinichiAoyagi
  2. 2. 自己紹介  青柳臣一  @ShinichiAoyagi  職業: ソフトウエア開発(大阪 淀屋橋)  Xamarin + ASP.NET MVC/Web API(C#) + WPF(C#)  WPF(C#)、Windows Froms(VB)  iOS(Objective-C)、Android(Java)
  3. 3. MVVMCross  MVVM をサポートするライブラリ  https://github.com/MvvmCross/MvvmCross  MVVM 以外にも便利な機能あり  Xamarin 専用というわけではない
  4. 4. MVVM  Model – View - ViewModel  「見た目」と「データ」と「連結部」 ビュー iOS ビュー WinPhone ビュー Android ビュー WPF ビュー モデル モデル
  5. 5. MVVMCross を使いはじめる  NuGet でインストール  全部のプロジェクトに  ちょっと修正  App1.Core → App1  iOS  AppDelegate.cs 変更  Main.storyboard を消す  Android  MainActivity.cs を消す  Windows Phone  App.xaml.cs を変更
  6. 6. MVVMCross の起動の流れ  iOS  AppDelegate.cs → Setup.cs → Core.App.cs  Android  SplashScreen(MainLauncher=true) → Setup.cs → Core.App.cs  Windows Phone  App.xaml.cs → Setup.cs → Core.App.cs  どれも最後は Mvx.Resolve<IMvxAppStart>().Start() がんばってる
  7. 7. データバインディング  ビューモデル  MvxViewModel を継承する  XAML で書くときと同じ  INotifyPropertyChanged で変更通知 private string hello = "Hello MvvmCross"; public string Hello { get { return this.hello; } set { this.hello = value; RaisePropertyChanged(() => this.Hello); } } public IMvxCommand ClickCommand { get { return new MvxCommand(() => { this.Hello = "Click!"; }); } }
  8. 8. データバインディング.iOS  コードで書く  using Cirrious.MvvmCross.Binding.BindingContext;  インテリセンスのおかげで悪くはない  Set.Bind(control).For(c => c.Text).To(vm => vm.Hello).WithConversion(…); var set = this.CreateBindingSet<FirstView, App1.ViewModels.FirstViewModel>(); set.Bind(label).To(vm => vm.Hello); set.Bind(textField).To(vm => vm.Hello); set.Bind(button).To(vm => vm.ClickCommand); set.Apply();
  9. 9. データバインディング.Droid  axml に書く <EditText ~略~ local:MvxBind="Text Hello" /> <TextView ~略~ local:MvxBind="Text Hello" /> <Button ~略~ local:MvxBind="Click ClickCommand"/>
  10. 10. Color プラグイン  NuGet でプラグインを入れる  これも全部のプロジェクトに  ViewModel  MvxColor を使う  View  データバインド + ValueConverter  iOS: set.Bind(label) .For(c => c.TextColor).To(vm => vm.LabelColor) .WithConversion(new MvxNativeColorValueConverter());  Android: local:MvxBind="Text Hello; TextColor NativeColor(LabelColor)“  XAML: Color="{Binding CurrentColor, Converter={StaticResource NativeColor}}" set.Bind(label).For(c => c.TextColor).To(vm => vm.LabelColor).WithConversion(new MvxNativeColorValueConverter());
  11. 11. プラグイン (2)  コードでよく使うのにプラットフォームで違うものたち  ブラウザー起動  メール起動  ファイルアクセス  Sqlite  その他にもいろいろ  https://github.com/MvvmCross/MvvmCross/wiki/MvvmCross-plugins Mvx.Resolve<IMvxWebBrowserTask>().ShowWebPage("http://yahoo.co.jp/");
  12. 12. MvxViewModel  ビューの遷移  ShowViewModel<TViewModel>(new { id = “..”, flag = true }); ViewModel で public void Init(string id, bool flag) { …
  13. 13. Mvx の IoC  基本  登録: Mvx.RegisterSingleton<IFoo>(new Foo());  参照: Mvx.Resolve<IFoo>().Bar();  Cirrious.CrossCore.IoC.MvxTypeExtensions  https://github.com/MvvmCross/MvvmCross/wiki/Service-Location-and-Inversion-of-Control  プラグインはこの仕組み
  14. 14. MVVMCross の闇  iOS のストーリーボードは?  MvxTouchViewsContainer を継承してごにょごにょすればできた  モーダルなウインドウは?  ViewPresenter とかごにょごにょすればできた  Xamarin.Forms は?  Setup.cs とか MvxViewModelViewTypeFinder とか ViewPresenter とか いろんなものをごにょごにょすればできた
  15. 15. MVVMCross わかりにくいところもあるけど便利なところもおおいよ (個人の感想です)

×