SlideShare ist ein Scribd-Unternehmen logo
1 von 15
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(VB)
 iOS(Objective-C)、Android(Java)
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 を消す
 Android
 MainActivity.cs を消す
 Windows Phone
 App.xaml.cs を変更
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()
がんばってる
データバインディング
 ビューモデル
 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!"; }); }
}
データバインディング.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();
データバインディング.Droid
 axml に書く
<EditText
~略~
local:MvxBind="Text Hello" />
<TextView
~略~
local:MvxBind="Text Hello" />
<Button
~略~
local:MvxBind="Click ClickCommand"/>
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());
プラグイン (2)
 コードでよく使うのにプラットフォームで違うものたち
 ブラウザー起動
 メール起動
 ファイルアクセス
 Sqlite
 その他にもいろいろ
 https://github.com/MvvmCross/MvvmCross/wiki/MvvmCross-plugins
Mvx.Resolve<IMvxWebBrowserTask>().ShowWebPage("http://yahoo.co.jp/");
MvxViewModel
 ビューの遷移
 ShowViewModel<TViewModel>(new { id = “..”, flag = true });
ViewModel で
public void Init(string id, bool flag)
{
…
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
 プラグインはこの仕組み
MVVMCross の闇
 iOS のストーリーボードは?
 MvxTouchViewsContainer を継承してごにょごにょすればできた
 モーダルなウインドウは?
 ViewPresenter とかごにょごにょすればできた
 Xamarin.Forms は?
 Setup.cs とか MvxViewModelViewTypeFinder とか ViewPresenter とか
いろんなものをごにょごにょすればできた
MVVMCross
わかりにくいところもあるけど便利なところもおおいよ
(個人の感想です)

Weitere ähnliche Inhalte

Was ist angesagt?

Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツMasuda Tomoaki
 
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM塹壕よりLivetとMVVM
塹壕よりLivetとMVVMHiroshi Maekawa
 
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...Fujio Kojima
 
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介Yoshito Tabuchi
 
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
この辺でXamarin導入による 効果と限界をしっかり把握してみよう  MVP Community Camp 2015 この辺でXamarin導入による 効果と限界をしっかり把握してみよう  MVP Community Camp 2015
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015 Shinichi Hirauchi
 
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~
Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~Fujio Kojima
 
Xamarin 101 ~環境構築からビルド・テストまで~
Xamarin 101 ~環境構築からビルド・テストまで~Xamarin 101 ~環境構築からビルド・テストまで~
Xamarin 101 ~環境構築からビルド・テストまで~Masaki Takeda
 
20171202 Xamarinの歩き方
20171202 Xamarinの歩き方20171202 Xamarinの歩き方
20171202 Xamarinの歩き方Yoshito Tabuchi
 
Xamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しよう
Xamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しようXamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しよう
Xamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しようAkira Onishi
 
C++からC#まで Visual Studio 縛り (で死ぬ実験)
C++からC#まで Visual Studio 縛り (で死ぬ実験)C++からC#まで Visual Studio 縛り (で死ぬ実験)
C++からC#まで Visual Studio 縛り (で死ぬ実験)Takashi Kawasaki
 
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションC# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションYoshito Tabuchi
 
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメYoshito Tabuchi
 
Why prism for xamarin.forms
Why prism for xamarin.formsWhy prism for xamarin.forms
Why prism for xamarin.formsAtsushi Nakamura
 
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」Yoshito Tabuchi
 
Xamarin から使う Azure
Xamarin から使う AzureXamarin から使う Azure
Xamarin から使う AzureYoshito Tabuchi
 
続Xamarinはじめました
続Xamarinはじめました続Xamarinはじめました
続XamarinはじめましたYuya Yamaki
 
Xamarin バッドノウハウ大全
Xamarin バッドノウハウ大全Xamarin バッドノウハウ大全
Xamarin バッドノウハウ大全Yoshito Tabuchi
 
Cod2013 Sapporo #1
Cod2013 Sapporo #1Cod2013 Sapporo #1
Cod2013 Sapporo #1Tomoyuki Obi
 

Was ist angesagt? (20)

Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
 
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM塹壕よりLivetとMVVM
塹壕よりLivetとMVVM
 
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
 
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
 
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
この辺でXamarin導入による 効果と限界をしっかり把握してみよう  MVP Community Camp 2015 この辺でXamarin導入による 効果と限界をしっかり把握してみよう  MVP Community Camp 2015
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
 
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~
Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~
 
Xamarin 101 ~環境構築からビルド・テストまで~
Xamarin 101 ~環境構築からビルド・テストまで~Xamarin 101 ~環境構築からビルド・テストまで~
Xamarin 101 ~環境構築からビルド・テストまで~
 
20171202 Xamarinの歩き方
20171202 Xamarinの歩き方20171202 Xamarinの歩き方
20171202 Xamarinの歩き方
 
Xamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しよう
Xamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しようXamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しよう
Xamarin + Visual Studio によるマルチプラットフォーム対応アプリ開発 - iOS, Android, Windows に対応しよう
 
C++からC#まで Visual Studio 縛り (で死ぬ実験)
C++からC#まで Visual Studio 縛り (で死ぬ実験)C++からC#まで Visual Studio 縛り (で死ぬ実験)
C++からC#まで Visual Studio 縛り (で死ぬ実験)
 
Xamarin の救世主 Unity !
Xamarin の救世主 Unity !Xamarin の救世主 Unity !
Xamarin の救世主 Unity !
 
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションC# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
 
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
 
Why prism for xamarin.forms
Why prism for xamarin.formsWhy prism for xamarin.forms
Why prism for xamarin.forms
 
Xamarin Overview
Xamarin Overview Xamarin Overview
Xamarin Overview
 
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」
 
Xamarin から使う Azure
Xamarin から使う AzureXamarin から使う Azure
Xamarin から使う Azure
 
続Xamarinはじめました
続Xamarinはじめました続Xamarinはじめました
続Xamarinはじめました
 
Xamarin バッドノウハウ大全
Xamarin バッドノウハウ大全Xamarin バッドノウハウ大全
Xamarin バッドノウハウ大全
 
Cod2013 Sapporo #1
Cod2013 Sapporo #1Cod2013 Sapporo #1
Cod2013 Sapporo #1
 

Ähnlich wie Xamarin+MVVMCross のあれこれ

MvvmCross 入門
MvvmCross 入門MvvmCross 入門
MvvmCross 入門jz5 MATSUE
 
20140322 mvvm crossforwindowsstoreapps
20140322 mvvm crossforwindowsstoreapps20140322 mvvm crossforwindowsstoreapps
20140322 mvvm crossforwindowsstoreappsTakayoshi Tanaka
 
20140322 mvvm crossforwindowsstoreapps-pdf
20140322 mvvm crossforwindowsstoreapps-pdf20140322 mvvm crossforwindowsstoreapps-pdf
20140322 mvvm crossforwindowsstoreapps-pdfTakayoshi Tanaka
 
ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門Masuda Tomoaki
 
クライアントサイドMVVMアーキテクチャとVue.jsをまとめたよ
クライアントサイドMVVMアーキテクチャとVue.jsをまとめたよクライアントサイドMVVMアーキテクチャとVue.jsをまとめたよ
クライアントサイドMVVMアーキテクチャとVue.jsをまとめたよSeki Yousuke
 
Visual Studio 2017 事はじめ
Visual Studio 2017 事はじめVisual Studio 2017 事はじめ
Visual Studio 2017 事はじめHideaki Aoyagi
 
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT apps
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT appsMAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT apps
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT appsShotaro Suzuki
 
xamarin for android試してみた
xamarin for android試してみたxamarin for android試してみた
xamarin for android試してみたLee Choong Geun
 
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかC#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかYoshifumi Kawai
 
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントXamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントMasuda Tomoaki
 
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発tomotoshi
 
ReactiveUI を使った表計算っぽいWPFアプリケーションで Reactiveプログラミング の練習をした話
ReactiveUI を使った表計算っぽいWPFアプリケーションで Reactiveプログラミング の練習をした話ReactiveUI を使った表計算っぽいWPFアプリケーションで Reactiveプログラミング の練習をした話
ReactiveUI を使った表計算っぽいWPFアプリケーションで Reactiveプログラミング の練習をした話Hironori Suzuki
 
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルVisual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルAkira Inoue
 
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby CocoaTomoki Maeda
 
Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-Takaaki Suzuki
 

Ähnlich wie Xamarin+MVVMCross のあれこれ (20)

MvvmCross 入門
MvvmCross 入門MvvmCross 入門
MvvmCross 入門
 
20140322 mvvm crossforwindowsstoreapps
20140322 mvvm crossforwindowsstoreapps20140322 mvvm crossforwindowsstoreapps
20140322 mvvm crossforwindowsstoreapps
 
20140322 mvvm crossforwindowsstoreapps-pdf
20140322 mvvm crossforwindowsstoreapps-pdf20140322 mvvm crossforwindowsstoreapps-pdf
20140322 mvvm crossforwindowsstoreapps-pdf
 
ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門
 
クライアントサイドMVVMアーキテクチャとVue.jsをまとめたよ
クライアントサイドMVVMアーキテクチャとVue.jsをまとめたよクライアントサイドMVVMアーキテクチャとVue.jsをまとめたよ
クライアントサイドMVVMアーキテクチャとVue.jsをまとめたよ
 
Xamarin Overview
Xamarin Overview Xamarin Overview
Xamarin Overview
 
Visual Studio 2017 事はじめ
Visual Studio 2017 事はじめVisual Studio 2017 事はじめ
Visual Studio 2017 事はじめ
 
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT apps
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT appsMAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT apps
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT apps
 
xamarin for android試してみた
xamarin for android試してみたxamarin for android試してみた
xamarin for android試してみた
 
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかC#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのか
 
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントXamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
 
Xamarin.iOS
Xamarin.iOSXamarin.iOS
Xamarin.iOS
 
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発
 
20100218
2010021820100218
20100218
 
ReactiveUI を使った表計算っぽいWPFアプリケーションで Reactiveプログラミング の練習をした話
ReactiveUI を使った表計算っぽいWPFアプリケーションで Reactiveプログラミング の練習をした話ReactiveUI を使った表計算っぽいWPFアプリケーションで Reactiveプログラミング の練習をした話
ReactiveUI を使った表計算っぽいWPFアプリケーションで Reactiveプログラミング の練習をした話
 
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルVisual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
 
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
 
iOSでMVVM入門
iOSでMVVM入門iOSでMVVM入門
iOSでMVVM入門
 
MVVM入門
MVVM入門MVVM入門
MVVM入門
 
Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-
 

Mehr von ShinichiAoyagi

WPF & Windows Forms on .NET Core 3.0
WPF & Windows Forms on .NET Core 3.0WPF & Windows Forms on .NET Core 3.0
WPF & Windows Forms on .NET Core 3.0ShinichiAoyagi
 
うるう秒とタイムゾーン
うるう秒とタイムゾーンうるう秒とタイムゾーン
うるう秒とタイムゾーンShinichiAoyagi
 
LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLLINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLShinichiAoyagi
 
C# と .NET と ・・・
C# と .NET と ・・・C# と .NET と ・・・
C# と .NET と ・・・ShinichiAoyagi
 
LINQ の概要とかもろもろ
LINQ の概要とかもろもろLINQ の概要とかもろもろ
LINQ の概要とかもろもろShinichiAoyagi
 
Windows ストアーアプリで SQLite を使ってみよう
Windows ストアーアプリで SQLite を使ってみようWindows ストアーアプリで SQLite を使ってみよう
Windows ストアーアプリで SQLite を使ってみようShinichiAoyagi
 
WindowsストアーアプリでSharpDXを動かしてみる
WindowsストアーアプリでSharpDXを動かしてみるWindowsストアーアプリでSharpDXを動かしてみる
WindowsストアーアプリでSharpDXを動かしてみるShinichiAoyagi
 
メトロスタイルアプリ開発 最初の一歩
メトロスタイルアプリ開発最初の一歩メトロスタイルアプリ開発最初の一歩
メトロスタイルアプリ開発 最初の一歩ShinichiAoyagi
 
メトロスタイルってなに?
メトロスタイルってなに?メトロスタイルってなに?
メトロスタイルってなに?ShinichiAoyagi
 
ついに日本上陸!Windows Phone 7.5 アプリケーション開発
ついに日本上陸!Windows Phone 7.5 アプリケーション開発ついに日本上陸!Windows Phone 7.5 アプリケーション開発
ついに日本上陸!Windows Phone 7.5 アプリケーション開発ShinichiAoyagi
 

Mehr von ShinichiAoyagi (12)

WPF & Windows Forms on .NET Core 3.0
WPF & Windows Forms on .NET Core 3.0WPF & Windows Forms on .NET Core 3.0
WPF & Windows Forms on .NET Core 3.0
 
うるう秒とタイムゾーン
うるう秒とタイムゾーンうるう秒とタイムゾーン
うるう秒とタイムゾーン
 
XAML 入門
XAML 入門XAML 入門
XAML 入門
 
LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLLINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XML
 
C# と .NET と ・・・
C# と .NET と ・・・C# と .NET と ・・・
C# と .NET と ・・・
 
LINQ概要
LINQ概要LINQ概要
LINQ概要
 
LINQ の概要とかもろもろ
LINQ の概要とかもろもろLINQ の概要とかもろもろ
LINQ の概要とかもろもろ
 
Windows ストアーアプリで SQLite を使ってみよう
Windows ストアーアプリで SQLite を使ってみようWindows ストアーアプリで SQLite を使ってみよう
Windows ストアーアプリで SQLite を使ってみよう
 
WindowsストアーアプリでSharpDXを動かしてみる
WindowsストアーアプリでSharpDXを動かしてみるWindowsストアーアプリでSharpDXを動かしてみる
WindowsストアーアプリでSharpDXを動かしてみる
 
メトロスタイルアプリ開発 最初の一歩
メトロスタイルアプリ開発最初の一歩メトロスタイルアプリ開発最初の一歩
メトロスタイルアプリ開発 最初の一歩
 
メトロスタイルってなに?
メトロスタイルってなに?メトロスタイルってなに?
メトロスタイルってなに?
 
ついに日本上陸!Windows Phone 7.5 アプリケーション開発
ついに日本上陸!Windows Phone 7.5 アプリケーション開発ついに日本上陸!Windows Phone 7.5 アプリケーション開発
ついに日本上陸!Windows Phone 7.5 アプリケーション開発
 

Xamarin+MVVMCross のあれこれ

  • 1. Xamarin + MVVMCross の あれこれ 第5回 Japan Xamarin User Group Conference 大阪 2015/07/11 青柳臣一 @ShinichiAoyagi
  • 2. 自己紹介  青柳臣一  @ShinichiAoyagi  職業: ソフトウエア開発(大阪 淀屋橋)  Xamarin + ASP.NET MVC/Web API(C#) + WPF(C#)  WPF(C#)、Windows Froms(VB)  iOS(Objective-C)、Android(Java)
  • 3. MVVMCross  MVVM をサポートするライブラリ  https://github.com/MvvmCross/MvvmCross  MVVM 以外にも便利な機能あり  Xamarin 専用というわけではない
  • 4. MVVM  Model – View - ViewModel  「見た目」と「データ」と「連結部」 ビュー iOS ビュー WinPhone ビュー Android ビュー WPF ビュー モデル モデル
  • 5. MVVMCross を使いはじめる  NuGet でインストール  全部のプロジェクトに  ちょっと修正  App1.Core → App1  iOS  AppDelegate.cs 変更  Main.storyboard を消す  Android  MainActivity.cs を消す  Windows Phone  App.xaml.cs を変更
  • 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. データバインディング  ビューモデル  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. データバインディング.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. データバインディング.Droid  axml に書く <EditText ~略~ local:MvxBind="Text Hello" /> <TextView ~略~ local:MvxBind="Text Hello" /> <Button ~略~ local:MvxBind="Click ClickCommand"/>
  • 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. プラグイン (2)  コードでよく使うのにプラットフォームで違うものたち  ブラウザー起動  メール起動  ファイルアクセス  Sqlite  その他にもいろいろ  https://github.com/MvvmCross/MvvmCross/wiki/MvvmCross-plugins Mvx.Resolve<IMvxWebBrowserTask>().ShowWebPage("http://yahoo.co.jp/");
  • 12. MvxViewModel  ビューの遷移  ShowViewModel<TViewModel>(new { id = “..”, flag = true }); ViewModel で public void Init(string id, bool flag) { …
  • 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. MVVMCross の闇  iOS のストーリーボードは?  MvxTouchViewsContainer を継承してごにょごにょすればできた  モーダルなウインドウは?  ViewPresenter とかごにょごにょすればできた  Xamarin.Forms は?  Setup.cs とか MvxViewModelViewTypeFinder とか ViewPresenter とか いろんなものをごにょごにょすればできた