SlideShare a Scribd company logo
1 of 49
Download to read offline
Windows Phone開発のための
Prism + ReactiveProperty基本
2015/6/26 まんつーまん@調布
大田 一希
Prismとは
• Microsoft Patterns & Practicesチーム製のMVVMフレームワーク
• 以下のプラットフォームをサポート
• WPF(超複雑)
• Silverlight(オワコン)
• Windows store app
• Windows Phone(今回の主題)
• Xamarin(Preview)
• 最近MS P&PチームからMVP主体のチームに移管された
Prism.StoreApps
Prism.StoreAppsの中から電話向けに説明
Prism.StoreApps
• Universal app(Windows store app + Windows Phone app)版Prism
• 以下の構成要素がある
• Prism.Mvvm :MVVMをサポートする基本クラスを提供
• Prism.Mvvm.Phone :↑にPhone固有機能を提供
• Prism.StoreApps :Win store app + WP app固有機能を提供
• Prism.StoreApps.Phone:↑にWP固有機能を提供
覚えておきたいクラス
Prism.Mvvm
• 本当にプレーンなMVVMの必要最低限の機能を提供するライブラリ
• 以下の機能を提供
• BindableBase class :INotifyPropertyChangedの基本実装
• DelegateCommand class :ICommandの基本実装
Prism.Mvvm.Phone
• 以下の機能を提供
• ViewModelLocator class :ViewとViewModelの紐づけ機能
Prism.StoreApps
• PrismのUniversal app版
• 以下の機能を提供
• VisualStateAwarePage class :ページの基本クラス
• ViewModel class :ViewModelの基本クラス
• SessionStateService class :中断時の一時データ保存用クラス
• FrameNavigationService class :画面遷移用クラス
Prism.StoreApps.Phone
• Prism.StoreAppsのPhone特化版
• 以下の機能を提供
• MvvmAppBase class :Appクラスの基本クラス
クラス詳解
各クラスの使い方
BindableBase class
• MVVMには必須のINotifyPropertyChangedの実装クラス
• SetProperty<T>メソッドを使う
こんな感じにsetが書ける
コードスニペットに登録すると捗る
DelegateCommand class
• ReactiveProperty使うならいらない子なので割愛
ViewModelLocator class
• 命名規約(カスタマイズ可能だけどやりかたは割愛)によりViewと
ViewModelを紐づける
• 以下のような命名規約
• AppNamespace.Views.HogePage(View名)
• AppNamespace.ViewModels.HogePageViewModel(View名+ViewModel)
この2つを結びつける
ViewModelLocator class
• ページの添付プロパティとして記述することで機能する
VisualStateAwarePage class
• Pageに便利機能を追加
• Prismを使う上でページはこいつを継承する必要がある
• 以下の機能を提供
• GoBackCommand property :戻る機能のCommand
• GoHomeCommand property :トップページへ戻る機能のCommand
• SaveState method :オーバーライドして中断時のデータ保存
• LoadState method :オーバーライドして中断時のデータ読込
• VisualStateの切り替え
• DefaultLayout, PortraitLayout, MinimalLayoutを自動で切り替え(詳細は割愛)
VisualStateAwarePage class
• 以下のように”空白のページ”テンプレートを書き換える
• ViewModelLocatorも合わせて以下のようなXAMLがひな形
VisualStateAwarePageの名前
空間を定義
Pageタグを書き換え
VisualStateAwarePage class
• 以下のように”空白のページ”のテンプレートを書き換える
OnNavigatedToメソッドのオー
バーライドを消す
基本クラスを
VisualStateAwarePageにする
ViewModel class
• BindableBaseを拡張して以下の機能を提供する
• OnNavigatedToメソッド :画面遷移してきたときに呼ばれる
• OnNavigatedFromメソッド :画面から離れるときに呼ばれる
• 中断処理への対応 :RestorableState属性つけたプロパティの自動
復元
ViewModel class
• 基本以下のような書き方になる
SessionStateService class
• 中断時のデータ保存用クラス
• 実際に使うときはISessionStateService interface
• 後述するMvvmAppBaseのプロパティとして定義される
• Dictionary<string, object> SessionState { get; }プロパティがある
• ↑は、中断時のデータ保存場所
• RegisterKnownTypeメソッド
• プリミティブ型以外をSessionStateに登録するときに型を登録するメソッド
(しておかないと例外が飛ぶ)
FrameNavigationService class
• 画面遷移をするためのクラス
• 実際使うときはINavigationService interface
• MvvmAppBaseクラスのプロパティとして定義される
FrameNavigationService class
• 画面遷移の仕方
• ViewのXXXXPageに遷移するときは以下のように呼び出す
• NavigationService.Navigate(“XXXX”, null); // 第二引数は画面遷移パラメータ
• Frameにあるようなメソッドがある
• GoBack() :戻る
• CanBoBack() :戻れる場合true
MvvmAppBase class
• Appクラスの基本クラス
• なが~いApp.xaml.csをシンプルに書ける
MvvmAppBase class
• Appクラスの定義方法
• App.xamlを以下のように書き換える
MvvmAppBaseの名前空間を
定義
Appタグを書き換え
MvvmAppBase class
• MainPageに遷移する場合のコードビハインド
長い処理を消して画面遷移す
るだけの処理へ
基本クラスをMvvmAppBaseへ
組み合わせて使う
Pageで画面遷移するには
• MvvmAppBaseのOnInitializeAsyncメソッドをオーバーライドする
• Pageに紐づくViewModelの生成をカスタマイズする
• ViewModelにNavigationServiceを渡す
• MainPageViewModelの生成をカスタマイズする場合は以下のような感じ
Pageで画面遷移するには
• ViewModel側では以下のようにコンストラクタでINavigationServiceを受
け取り、それを使って画面遷移をする
Modelはどうするの?
• Appクラスで作成してViewModelに渡すのがいいと思います
ReactiveProperty
ReactiveProperty
• Reactive Extensions(Rx)をベースにしたMVVMサポートライブラリ
• V ⇔ ViewModel ⇔ Modelの間をRxでシームレスに繋ぐのが特徴
ReactiveProperty
• 以下のクラスを提供
• ReactiveProperty<T> class :ViewModelのプロパティ用
• ReactiveCommand class :ViewModelのCommand用
• ReadOnlyReactiveCollection<T> class:ViewModelのコレクション用
• その他拡張メソッドを提供
• INotifyPropertyChangedの拡張メソッド
• ToReactivePropertyAsSynchronized method :MのプロパティとVMの
ReactivePropertyの同期をとるためのメソッド
• ObservableCollection<T>の拡張メソッド
• ToReadOnlyReactiveCollection method :MのObservableCollection<T>と
VMのReadOnlyReactiveCollection<T>の同期をとるためのメソッド
ReactiveProperty class
• ViewModelに定義するプロパティ
• public ReactiveProperty<string> Name { get; private set; }のように定義
• コンストラクタで初期化
• this.Name = new ReactiveProperty<string>(); // nullを持った状態
• this.Name = new ReactiveProperty<string>(“なまえ”); // 初期値を持った状態
• this.Name = source.ToReactiveProperty(); // IObservable<T>から変換
• this.Name = person.ToReactivePropertyAsSynchronized(x => x.Name); // Modelのプロ
パティから変換
ReactiveProperty class
• IObservable<T>からの変換
• 超便利なので覚えておくべき
• model // 何かINotifyPropertyChangedの実装クラス
.PropertyChangedAsObservable(x => x.Name) // IObservable<T>に変換
.ToReactiveProperty(); // ReactivePropertyに変換
• ↑でModelからViewModelへの一方通行値同期が可能
ReactiveProperty class
• ToReactivePropertyAsSynchronized methodも便利
• model // INotifyPropertyChangedの実装クラス
.ToReactivePropertyAsSynchronized(x => x.Name); //Nameプロパティと同期
• model // INotifyPropertyChangedの実装クラス
.ToReactivePropertyAsSynchronized(
x => x.Age, // Ageプロパティを
x => x.ToString(), // M -> VMの時は文字列に変換して
x => int.Parse(x)); // VM -> Mの時はintに変換する
ReactiveProperty class
• ToReactivePropertyAsSynchronized methodも便利
• model // INotifyPropertyChangedの実装クラス
.ToReactivePropertyAsSynchronized(
x => x.Age, // Ageプロパティを
x => x.Age.ToString(), // M -> VMの時は文字列に変換して
x => int.Parse(x), // VM -> Mの時はintに変換する
ignoreValidationErrorValue: true); // 変な値は通さない(次ページ参照)
ReactiveProperty class
• 値の検証をサポート
• // 何らかの方法でRPを作成
this.Hoge = xxxx.ToReactivePropertyAsSynchronized(…)
// 検証ロジックを設定(nullの時はOKでそうじゃないときはエラーメッセージ)
.SetValidateNotifyError(x =>
{
var x = 0;
if (int.TryParse(x, out x)) { return null; }
else { return "整数を入力してください"; }
});
ReactiveCommand class
• IObservable<bool>から生成可能なCommand
• public ReactiveCommand HogeCommand { get; private set; }
• コンストラクタで以下のように初期化
• this.HogeCommand = new ReactiveCommand(); // 常に実行可能なコマンド
• this.HogeCommand = source.ToReactiveCommand(); // IO<bool>がtrueの
時だけ実行可能なコマンド
ReactiveCommand class
• コマンドの処理はSubscribeメソッドでやる
• this.HogeCommand.Subscribe(_ =>
{
// コマンド実行時の処理
});
ReadOnlyReactiveCollection class
• ModelのObservableCollection<T>をViewModelで読み取り専用コレク
ションとして公開する
• 以下のように定義する
• public ReadOnlyReactiveCollection<PersonViewModel> People { get;
private set; }
• 以下のように初期化する
• // modelでObservableCollection<Person>が定義されてるとする
this.People = model.People
// model.Peopleと同期をとったPersonViewModelのコレクションを作成
.ToReadOnlyReactiveCollection(x => new PersonViewModel(x));
組み合わせて使う
PrismとReactiveProperty
基本はModelは普通に書く
• INotifyPropertyChangedとObservableCollection<T>による変更通知
• 機能をメソッドとして提供
ViewModelをPrism + ReactivePropertyで
• ViewModel classを継承
• ReactiveProperty<T>でプロパティを定義
• OnNavigatedToメソッドでReactiveProperty<T>の初期化
• OnNavigatedFromメソッドで後始末
後始末
• ReactivePropertyとModelを接続したら最後に接続を切ること
• じゃないと予期せぬ処理が走ったりする
• 具体的には
• OnNavigatedToでCompositeDisposableに集める
• OnNavigatedFromでDisposeする
後始末
• こんな感じ
• private CompositeDisposable disposable = new CompositeDisposable();
• OnNavigatedToで
• this.Name = hoge.ToReactiveProperty().AddTo(this.disposable);
• this.People = model.People
.ToReadOnlyReactiveCollection(x => new PersonViewModel(x))
.AddTo(this.disposable);
• OnNavigatedFromで
• this.disposable.Dispose();
まとめ
Prism
• BindableBase
• ViewModelLocator
• ViewModel
• MvvmAppBase(NavigationService, SessionStateService)
• OnInitializeAsync
• OnLaunchApplicationAsync
ReactiveProperty
• ReactiveProperty<T>
• ReactiveCommand
• ReadOnlyReactiveCollection<T>
• INotifyPropertyChanged extension method
• ToReactivePropertyAsSynchronized
• ObservableCollection<T> extension method
• ToReadOnlyReactiveCollection
まとめ
• あとはケーススタディの積み重ね

More Related Content

What's hot

イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する増田 亨
 
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM塹壕よりLivetとMVVM
塹壕よりLivetとMVVMHiroshi Maekawa
 
Observableで非同期処理
Observableで非同期処理Observableで非同期処理
Observableで非同期処理torisoup
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説増田 亨
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかKoichiro Matsuoka
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ増田 亨
 
Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Yuya Yamaki
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで増田 亨
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方増田 亨
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しようUnity Technologies Japan K.K.
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門増田 亨
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するYoshifumi Kawai
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことBIGLOBE Inc.
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところY Watanabe
 
はじめてのUniRx
はじめてのUniRxはじめてのUniRx
はじめてのUniRxtorisoup
 
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探しリッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し増田 亨
 
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】Unity Technologies Japan K.K.
 
ビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かうビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう増田 亨
 

What's hot (20)

イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
 
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM塹壕よりLivetとMVVM
塹壕よりLivetとMVVM
 
Observableで非同期処理
Observableで非同期処理Observableで非同期処理
Observableで非同期処理
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。
 
MVVM入門
MVVM入門MVVM入門
MVVM入門
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
 
はじめてのUniRx
はじめてのUniRxはじめてのUniRx
はじめてのUniRx
 
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探しリッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
 
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
 
ビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かうビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう
 

Similar to Prism + ReactiveProperty入門

MvvmCross 入門
MvvmCross 入門MvvmCross 入門
MvvmCross 入門jz5 MATSUE
 
T119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターンT119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターン伸男 伊藤
 
Xamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみたXamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみたHironov OKUYAMA
 
Pylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイドPylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイドNozomu Kaneko
 
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm patternRIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm patternMami Shiino
 
Visual studio 2013 Overview
Visual studio 2013 OverviewVisual studio 2013 Overview
Visual studio 2013 Overview一希 大田
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!Shohei Okada
 
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチMonadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチTomoharu ASAMI
 
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)信之 岩永
 
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Tatsuji Kuroyanagi
 
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programmingオブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional ProgrammingTomoharu ASAMI
 
Blue monkey architecture overview
Blue monkey architecture overviewBlue monkey architecture overview
Blue monkey architecture overviewAtsushi Nakamura
 
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPracticeiOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPracticeKen Morishita
 
作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話Tsuyoshi Torii
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介Shotaro Suzuki
 
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツMasuda Tomoaki
 
DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話emorins
 

Similar to Prism + ReactiveProperty入門 (20)

MvvmCross 入門
MvvmCross 入門MvvmCross 入門
MvvmCross 入門
 
T119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターンT119_5年間の試行錯誤で進化したMVPVMパターン
T119_5年間の試行錯誤で進化したMVPVMパターン
 
Mvpvm pattern
Mvpvm patternMvpvm pattern
Mvpvm pattern
 
Xamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみたXamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみた
 
Pylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイドPylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイド
 
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm patternRIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
 
Visual studio 2013 Overview
Visual studio 2013 OverviewVisual studio 2013 Overview
Visual studio 2013 Overview
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive ProgrammingへのアプローチMonadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
 
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)
 
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
 
Spring3.1概要x di
Spring3.1概要x diSpring3.1概要x di
Spring3.1概要x di
 
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programmingオブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programming
 
Blue monkey architecture overview
Blue monkey architecture overviewBlue monkey architecture overview
Blue monkey architecture overview
 
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPracticeiOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
 
作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
 
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
 
Xamarin.iOS
Xamarin.iOSXamarin.iOS
Xamarin.iOS
 
DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話
 

More from 一希 大田

.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ一希 大田
 
Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!一希 大田
 
Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!一希 大田
 
.NET 5 and Windows app dev
.NET 5 and Windows app dev.NET 5 and Windows app dev
.NET 5 and Windows app dev一希 大田
 
Uno Platform 触ってみた
Uno Platform 触ってみたUno Platform 触ってみた
Uno Platform 触ってみた一希 大田
 
WPF on .NET Core 3.1 で Windows 10 アプリ開発
WPF on .NET Core 3.1 で Windows 10 アプリ開発WPF on .NET Core 3.1 で Windows 10 アプリ開発
WPF on .NET Core 3.1 で Windows 10 アプリ開発一希 大田
 
.NET Core 3.0 + Windows 10 で WPF 開発
.NET Core 3.0 + Windows 10 で WPF 開発.NET Core 3.0 + Windows 10 で WPF 開発
.NET Core 3.0 + Windows 10 で WPF 開発一希 大田
 
はじめよう Azure Functions
はじめよう Azure Functionsはじめよう Azure Functions
はじめよう Azure Functions一希 大田
 
Windows 10 対応のデスクトップアプリを作る技術(事前公開版v2)
Windows 10 対応のデスクトップアプリを作る技術(事前公開版v2)Windows 10 対応のデスクトップアプリを作る技術(事前公開版v2)
Windows 10 対応のデスクトップアプリを作る技術(事前公開版v2)一希 大田
 
Xamarin.Forms アプリケーション 設計パターン
Xamarin.Forms アプリケーション 設計パターンXamarin.Forms アプリケーション 設計パターン
Xamarin.Forms アプリケーション 設計パターン一希 大田
 
Windows 10 対応のデスクトップアプリを 作る技術(事前公開版)
Windows 10 対応のデスクトップアプリを 作る技術(事前公開版)Windows 10 対応のデスクトップアプリを 作る技術(事前公開版)
Windows 10 対応のデスクトップアプリを 作る技術(事前公開版)一希 大田
 
WPF on .NET Core 3.0
WPF on .NET Core 3.0WPF on .NET Core 3.0
WPF on .NET Core 3.0一希 大田
 
Visual Studio 2019 の個人的なお勧め機能(発表時点)
Visual Studio 2019 の個人的なお勧め機能(発表時点)Visual Studio 2019 の個人的なお勧め機能(発表時点)
Visual Studio 2019 の個人的なお勧め機能(発表時点)一希 大田
 
Visual Studio 2019 の個人的なお勧め機能
Visual Studio 2019 の個人的なお勧め機能Visual Studio 2019 の個人的なお勧め機能
Visual Studio 2019 の個人的なお勧め機能一希 大田
 
Windows 10 に対応した デスクトップ アプリを作る技術(事前公開版 v2)
Windows 10 に対応した デスクトップ アプリを作る技術(事前公開版 v2)Windows 10 に対応した デスクトップ アプリを作る技術(事前公開版 v2)
Windows 10 に対応した デスクトップ アプリを作る技術(事前公開版 v2)一希 大田
 
事前公開版 Windows 10 に対応したデスクトップ アプリを作る技術 v1
事前公開版 Windows 10 に対応したデスクトップ アプリを作る技術 v1事前公開版 Windows 10 に対応したデスクトップ アプリを作る技術 v1
事前公開版 Windows 10 に対応したデスクトップ アプリを作る技術 v1一希 大田
 
スマートスピーカーのバックエンドで Azure を使う方法
スマートスピーカーのバックエンドでAzure を使う方法スマートスピーカーのバックエンドでAzure を使う方法
スマートスピーカーのバックエンドで Azure を使う方法一希 大田
 
Visual Studio App center 概要
Visual Studio App center 概要Visual Studio App center 概要
Visual Studio App center 概要一希 大田
 
はじめての HoloLens セッションの集大成お見せします!
はじめての HoloLens セッションの集大成お見せします!はじめての HoloLens セッションの集大成お見せします!
はじめての HoloLens セッションの集大成お見せします!一希 大田
 

More from 一希 大田 (20)

.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
 
Power Apps + C#
Power Apps + C#Power Apps + C#
Power Apps + C#
 
Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!
 
Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!
 
.NET 5 and Windows app dev
.NET 5 and Windows app dev.NET 5 and Windows app dev
.NET 5 and Windows app dev
 
Uno Platform 触ってみた
Uno Platform 触ってみたUno Platform 触ってみた
Uno Platform 触ってみた
 
WPF on .NET Core 3.1 で Windows 10 アプリ開発
WPF on .NET Core 3.1 で Windows 10 アプリ開発WPF on .NET Core 3.1 で Windows 10 アプリ開発
WPF on .NET Core 3.1 で Windows 10 アプリ開発
 
.NET Core 3.0 + Windows 10 で WPF 開発
.NET Core 3.0 + Windows 10 で WPF 開発.NET Core 3.0 + Windows 10 で WPF 開発
.NET Core 3.0 + Windows 10 で WPF 開発
 
はじめよう Azure Functions
はじめよう Azure Functionsはじめよう Azure Functions
はじめよう Azure Functions
 
Windows 10 対応のデスクトップアプリを作る技術(事前公開版v2)
Windows 10 対応のデスクトップアプリを作る技術(事前公開版v2)Windows 10 対応のデスクトップアプリを作る技術(事前公開版v2)
Windows 10 対応のデスクトップアプリを作る技術(事前公開版v2)
 
Xamarin.Forms アプリケーション 設計パターン
Xamarin.Forms アプリケーション 設計パターンXamarin.Forms アプリケーション 設計パターン
Xamarin.Forms アプリケーション 設計パターン
 
Windows 10 対応のデスクトップアプリを 作る技術(事前公開版)
Windows 10 対応のデスクトップアプリを 作る技術(事前公開版)Windows 10 対応のデスクトップアプリを 作る技術(事前公開版)
Windows 10 対応のデスクトップアプリを 作る技術(事前公開版)
 
WPF on .NET Core 3.0
WPF on .NET Core 3.0WPF on .NET Core 3.0
WPF on .NET Core 3.0
 
Visual Studio 2019 の個人的なお勧め機能(発表時点)
Visual Studio 2019 の個人的なお勧め機能(発表時点)Visual Studio 2019 の個人的なお勧め機能(発表時点)
Visual Studio 2019 の個人的なお勧め機能(発表時点)
 
Visual Studio 2019 の個人的なお勧め機能
Visual Studio 2019 の個人的なお勧め機能Visual Studio 2019 の個人的なお勧め機能
Visual Studio 2019 の個人的なお勧め機能
 
Windows 10 に対応した デスクトップ アプリを作る技術(事前公開版 v2)
Windows 10 に対応した デスクトップ アプリを作る技術(事前公開版 v2)Windows 10 に対応した デスクトップ アプリを作る技術(事前公開版 v2)
Windows 10 に対応した デスクトップ アプリを作る技術(事前公開版 v2)
 
事前公開版 Windows 10 に対応したデスクトップ アプリを作る技術 v1
事前公開版 Windows 10 に対応したデスクトップ アプリを作る技術 v1事前公開版 Windows 10 に対応したデスクトップ アプリを作る技術 v1
事前公開版 Windows 10 に対応したデスクトップ アプリを作る技術 v1
 
スマートスピーカーのバックエンドで Azure を使う方法
スマートスピーカーのバックエンドでAzure を使う方法スマートスピーカーのバックエンドでAzure を使う方法
スマートスピーカーのバックエンドで Azure を使う方法
 
Visual Studio App center 概要
Visual Studio App center 概要Visual Studio App center 概要
Visual Studio App center 概要
 
はじめての HoloLens セッションの集大成お見せします!
はじめての HoloLens セッションの集大成お見せします!はじめての HoloLens セッションの集大成お見せします!
はじめての HoloLens セッションの集大成お見せします!
 

Recently uploaded

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Recently uploaded (9)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

Prism + ReactiveProperty入門