Submit Search
WPF MVVM Review
Download as PPTX, PDF
13 likes
6,546 views
Takayuki Kondou
WPF および MVVM について mokusharp on 2013/7/18 (C#勉強会)にて発表した資料です。
Technology
Read more
1 of 41
Download now
Downloaded 80 times
1
2
Most read
3
4
Most read
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
More Related Content
What's hot
(20)
PDF
Windows Server 2019 で Container を使ってみる
Kazuki Takai
KEY
MVCもやもや話
Tetsuya Kaneuchi
PDF
Prism + ReactiveProperty入門
一希 大田
PPTX
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
PDF
ブラック企業から学ぶMVCモデル
Yuta Hiroto
PDF
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
PDF
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート
Hironori Washizaki
PPTX
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
JustSystems Corporation
PDF
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
PDF
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
PDF
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
PDF
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka
PPTX
Helidon 概要
オラクルエンジニア通信
PDF
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
増田 亨
PDF
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
PDF
ドメイン駆動設計入門
Takuya Kitamura
PDF
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
PDF
DevOps Overview
IIJ
PPTX
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
PDF
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
Windows Server 2019 で Container を使ってみる
Kazuki Takai
MVCもやもや話
Tetsuya Kaneuchi
Prism + ReactiveProperty入門
一希 大田
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
ブラック企業から学ぶMVCモデル
Yuta Hiroto
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート
Hironori Washizaki
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
JustSystems Corporation
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka
Helidon 概要
オラクルエンジニア通信
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
増田 亨
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
ドメイン駆動設計入門
Takuya Kitamura
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
DevOps Overview
IIJ
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
Viewers also liked
(17)
PPTX
T90 きっと怖くないmvvm & mvpvm
伸男 伊藤
PDF
Prism.Formsについて
一希 大田
PDF
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Ken Morishita
PDF
WPFことはじめ
Hiroshi Maekawa
PDF
これからはじめる XAML - WPF プログラミング
インフラジスティックス・ジャパン株式会社
PDF
KnockoutJS勉強会 プロジェクトにmvvmを適用する狙い
Toshihiro Kawachi
PDF
Unityでデスクトップマスコットを作ろう
yodaka16
PDF
Windowsフォームで大丈夫か?一番良いのを頼む。
Yuya Yamaki
PDF
今さらWPF?いいえ、今こそWPF!
Yuya Yamaki
PPTX
20分でできる!Xamarin.Forms入門
Shinichi Hirauchi
PDF
IOS/Androidアプリの3つの大事な設計方針
Ken Morishita
PPTX
C#/WPFで作るデスクトップマスコット入門
Fujikido
PPTX
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
PDF
リアクティブプログラミングとMVVMパターンについて
Hidenori Takeshita
PDF
WPF4.5入門
一希 大田
PDF
Robust Large-Scale Machine Learning in the Cloud
Yuto Yamaguchi
PDF
Xamarin.forms入門
一希 大田
T90 きっと怖くないmvvm & mvpvm
伸男 伊藤
Prism.Formsについて
一希 大田
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Ken Morishita
WPFことはじめ
Hiroshi Maekawa
これからはじめる XAML - WPF プログラミング
インフラジスティックス・ジャパン株式会社
KnockoutJS勉強会 プロジェクトにmvvmを適用する狙い
Toshihiro Kawachi
Unityでデスクトップマスコットを作ろう
yodaka16
Windowsフォームで大丈夫か?一番良いのを頼む。
Yuya Yamaki
今さらWPF?いいえ、今こそWPF!
Yuya Yamaki
20分でできる!Xamarin.Forms入門
Shinichi Hirauchi
IOS/Androidアプリの3つの大事な設計方針
Ken Morishita
C#/WPFで作るデスクトップマスコット入門
Fujikido
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
リアクティブプログラミングとMVVMパターンについて
Hidenori Takeshita
WPF4.5入門
一希 大田
Robust Large-Scale Machine Learning in the Cloud
Yuto Yamaguchi
Xamarin.forms入門
一希 大田
Ad
Similar to WPF MVVM Review
(20)
PDF
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT apps
Shotaro Suzuki
PDF
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
Daizen Ikehara
PDF
Open棟梁概要説明 v02-00
Daisuke Nishino
PDF
Netadvantage 2012 volume2 最新情報 Reporting 編
Daizen Ikehara
PDF
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Akira Inoue
PPTX
今から始める、Windows 10&新.NETへの移行戦略
信之 岩永
PDF
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
Daisuke Nishino
PDF
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
智治 長沢
PDF
Net advantage 2012 volume2 最新情報 Windows Forms / ASP.NET 編
Daizen Ikehara
PDF
[Japan Tech summit 2017] APP 001
Microsoft Tech Summit 2017
PDF
クロスプラットフォーム開発入門
minazou67
PDF
OSC2018 hiroshima session slide by OSSC
Daisuke Nishino
PDF
18-D-1 .Net Framework 4 概要
Developers Summit
PDF
Metroアプリケーションのwin8/wp7の効率的ソース運用を考える
Takahito Sugishita
PDF
Efsta cod2012 master_for_slideshare
Takahito Sugishita
PDF
Go azure tfs_service
Kaoru NAKAMURA
PDF
A 1-1 tfs on azure で始めるイマドキのソフトウェア開発
GoAzure
PDF
concrete5で社内システムのお話し
Tao Sasaki
PDF
Flex開発を加速するFlash Builder 4新機能紹介
Keisuke Todoroki
PDF
Visual Studio 2010
Visual Studio Users Group Japan
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT apps
Shotaro Suzuki
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
Daizen Ikehara
Open棟梁概要説明 v02-00
Daisuke Nishino
Netadvantage 2012 volume2 最新情報 Reporting 編
Daizen Ikehara
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Akira Inoue
今から始める、Windows 10&新.NETへの移行戦略
信之 岩永
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
Daisuke Nishino
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
智治 長沢
Net advantage 2012 volume2 最新情報 Windows Forms / ASP.NET 編
Daizen Ikehara
[Japan Tech summit 2017] APP 001
Microsoft Tech Summit 2017
クロスプラットフォーム開発入門
minazou67
OSC2018 hiroshima session slide by OSSC
Daisuke Nishino
18-D-1 .Net Framework 4 概要
Developers Summit
Metroアプリケーションのwin8/wp7の効率的ソース運用を考える
Takahito Sugishita
Efsta cod2012 master_for_slideshare
Takahito Sugishita
Go azure tfs_service
Kaoru NAKAMURA
A 1-1 tfs on azure で始めるイマドキのソフトウェア開発
GoAzure
concrete5で社内システムのお話し
Tao Sasaki
Flex開発を加速するFlash Builder 4新機能紹介
Keisuke Todoroki
Visual Studio 2010
Visual Studio Users Group Japan
Ad
Recently uploaded
(10)
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
PDF
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
WPF MVVM Review
1.
WPF MVVM Review Takayuki
KONDO
[email protected]
mokusharp (C# study meeting) on 2013/07/18
2.
目次 • WPF/XAML/MVVMキーワードのおさらい • WPF •
XAML • MVVM • 概念を理解しよう • PDS • XAML系でのPDS適用 • プレゼンテーションモデル
3.
WPF/XAML/MVVMおさらい Remember some keywords
? WPF, XAML, MVVM, …
4.
“WPF” • Windows Presentation
Foundation • ユーザインタフェースを作成するための新しい技術 • 次世代プレゼンテーションシステム • 多機能な対話型クライアントアプリケーションを作成するためのUIフ レームワーク • .NET Framework に含まれるGUI開発ライブラリ
5.
“WPF” • 概要 • Windowsフォームが、単にWin32
APIをマネージ・コードでラップし たものであるのに対して、WPFはマネージ・コードで新たに実装され たGUI開発ライブラリ • 豊かなユーザー体験を提供する先進的なGUI開発基盤 • 3.0以降の .NET Framework に標準搭載
6.
“WPF”の特徴と利点 • グラフィックス・ハードウェア • コントロール、メディア、文書の統合 •
UIカスタマイズの柔軟性 • 見た目(=外観デザイン)とロジックの分離 http://www.atmarkit.co.jp/ait/articles/1005/14/news105.html
7.
“WPF”の特徴と利点 • グラフィックス・ハードウェア • WPFはコアの部分にグラフィックス・ハードウェアを活用したベク ター・ベースのレンダリング・エンジンを採用している。ベクター・ ベースであるため、UI要素にスムーズな拡大・縮小/回転を掛けるこ とができる。また、ハードウェア・アクセラレーションにより、CPU への負担を最小限に抑えている。 •
コントロール、メディア、文書の統合 • UIカスタマイズの柔軟性 • 見た目(=外観デザイン)とロジックの分離 http://www.atmarkit.co.jp/ait/articles/1005/14/news105.html
8.
“WPF”の特徴と利点 • グラフィックス・ハードウェア • コントロール、メディア、文書の統合 •
WPFは、ボタンやリストボックスなどのコントロール、ラスター画像 やベクター・グラフィックス、頂点メッシュを用いた3D描画、動画な どのメディア、リッチテキストなどの整形済み文書に対して、統一的 な開発機能を提供する。それぞれに別個のプログラミング・モデルを 覚える必要がないだけではなく、例えばボタンの中に動画を表示する といった組み合わせも簡単に行える。 • UIカスタマイズの柔軟性 • 見た目(=外観デザイン)とロジックの分離 http://www.atmarkit.co.jp/ait/articles/1005/14/news105.html
9.
“WPF”の特徴と利点 • グラフィックス・ハードウェア • コントロール、メディア、文書の統合 •
UIカスタマイズの柔軟性 • 既存のGUI開発ライブラリでは、ボタンなどのUI要素をカスタマイズ するにしても、サイズや背景色の変更程度の機能しか持っていないも のも多い。 • これに対してWPFでは、例えば任意の形状のボタンを作成したり、背 景に動画を流したり、動的に回転や拡大・縮小を行ったりといった非 常に柔軟なカスタマイズが可能である。 • 見た目(=外観デザイン)とロジックの分離 http://www.atmarkit.co.jp/ait/articles/1005/14/news105.html
10.
“WPF”の特徴と利点 • グラフィックス・ハードウェア • コントロール、メディア、文書の統合 •
UIカスタマイズの柔軟性 • 見た目(=外観デザイン)とロジックの分離 • WPFではXAML(Extensible Application Markup Language)と呼ばれ る、XML形式の宣言的言語を用いてユーザー・インターフェイスを記 述する。 • 見た目(=外観デザイン)に関する部分をXAML言語で記述し、ロ ジックをC#言語などを用いて記述することで、アプリケーションの見 た目に関する部分をロジックから完全に切り離す構造になっている。 これは、ビジュアル・デザイナーとロジック開発者との協業を意識し たものである。 http://www.atmarkit.co.jp/ait/articles/1005/14/news105.html
11.
WPF •Windows •Presentation •UI/UX •Foundation •基礎
12.
WPF アーキテクチャ • PresentationFramework •
PresentationCore • milcore • アンマネージ http://msdn.microsoft.com/ja-jp/library/ms750441
13.
“XAML” • 宣言型マークアップ言語 http://msdn.microsoft.com/ja-jp/library/ms752059 <Window x:Class="XAML.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="ClickMe"
Height="150" Width="200"> <Grid> <StackPanel> <Button Content="押してください"></Button> </StackPanel> </Grid> </Window> XAML
14.
XAMLの利点 XAMLコードと(C#などの)分離コードを分けることの利点 1. ビジュアル・デザイナー向けのツールを用いた外観デザイン が容易 2. UI要素の階層が深くなった場合に、(一般的なプログラミン グ言語よりも)階層構造を把握しやすい 3.
Web開発で一般的に用いられているHTML+JavaScriptに似た 感覚でアプリケーションを開発可能 4. C#のようなプログラミング言語では書けない、あるいは、書 きにくい記述が容易
15.
“MVVM” • XAML系プラットフォーム(WPF/Silverlight/WP7/Metro)のため に生まれたMVC系パターン • MVC系パターン(MVC/MVP/MVVM)のGUIアーキテクチャ Prism
Development Guide Chapter 5: Implementing the MVVM Pattern Notifications View View ModelViewModel Presentation Logic Business Logic and DataUI and UI Logic(Code behind) Data Binding Commands
16.
MVVMパターンの概要 • Model/View/ViewModelの3つの責務にGUIアプリケーションを 分割するパターン • ViewはViewModelに依存、ViewModelはModelに依存。逆方向 の依存はない http://www.atmarkit.co.jp/fdotnet/chushin/greatblogentry_02/greatblogentry_02_01.html Notifications View View
ModelViewModel Presentation Logic Business Logic and DataUI and UI Logic(Code behind) Data Binding Commands
17.
“MVVM” • MVVMパターンは、WPFとSilverlightのデータバインディン グ、データテンプレート、コマンド、ビヘイビアのようないく つかのコア機能を活用するように最適化された、プレゼンテー ションモデルパターンの”近い変形”のことです Prism Development
Guide Chapter 5: Implementing the MVVM Pattern Notifications View View ModelViewModel Presentation Logic Business Logic and DataUI and UI Logic(Code behind) Data Binding Commands
18.
プレゼンテーションパターン の概念を理解しよう なんのために行うの?
19.
プレゼンテーションとドメイ ンの分離 (PDS) PresentationDomainSeparation
20.
プレゼンテーションとドメインの分離 • プレゼンテーションとドメインをなぜ分離するのでしょうか。 • どういったメリットがあるの? •
Martin Fowler氏が気づいたことが… Presentation Domain ユーザーインタフェース ロジック
21.
プレゼンテーションとドメインの分離 (PDS) • 有用な”設計原則”に、プレゼンテーション層(ユーザインタ フェース)とその他機能をうまく分ける、というのがありま す。私はこれを発見して以来、ずって慣行している。長い間こ れを使ってきていくつものメリットを発見しました http://capsctrl.que.jp/kdmsnr/wiki/bliki/?PresentationDomainSeparation Presentation Domain
22.
プレゼンテーションとドメインの分離 (PDS) • メリット • プレゼンテーションとドメインが分かれていると、理解しやすい •
同じ基本プログラムを、重複コードなしに、複数のプレゼンテーショ ンに対応できる • ユーザインタフェースはテストがしにくいため、それを分離すること により、テスト可能なロジック部分に集中できる • プレゼンテーション部分のコードは、ドメイン部分のコードと違った スキルと知識が必要 Presentation Domain
23.
プレゼンテーションとドメインの分離 (PDS) • これら多くのメリットがあるにもかかわらず、この原則が破ら れているのをよく目にします • なぜしない?(できない) •
知識がない。 • フレームワークがドメインとプレゼンテーションを安易に、ごちゃま ぜにして分割が困難。 • クラサバ型という意味ではない。同じマシン上でも論理的に分 割すべき http://capsctrl.que.jp/kdmsnr/wiki/bliki/?PresentationDomainSeparation
24.
プレゼンテーションとドメインの分離 (PDS) PresentationとDomain のそれぞれの感心事を分離する。 ただし相互依存は望ましくないため、Observerパターンが良い Presentation Domain 呼び出し イベント監視
25.
プレゼンテーションとドメインの分離 (PDS) • 分離することによる理解のしやすさ • テストがしやすい •
テストしにくいUIを分離、テストしやすくする • 変更に強い • プレゼンテーション部分の変更に、ドメインが引きづられない • 複数のプレゼンテーションが用意できる Presentation Domain 呼び出し イベント監視
26.
プレゼンテーションとドメインの分離 (PDS) • 規模が小さいプログラムでは冗長さが目立つかもしれません • しかしドメインの単体テスト自動化によるメリットは大きいで す Presentation
Domain 呼び出し イベント監視
27.
XAML系でのPDSの適用 How to apply
PDS to XAML systems
28.
XAML系(WPF)でPDSの適用 • XAMLにはXAML固有の都合でバインドするオブジェクトが必 要となる Presentation XAMLとXAMLの 都合が関係ある 部分 Domain XAMLとXAMLの 都合が関係ない 部分 呼び出し イベント監視
29.
XAML系(WPF)でPDSの適用 • XAMLにはXAML固有の都合でバインドするオブジェクトが必 要となる Presentation -
XAMLとXAMLの都 合が関係ある部分 Domain XAMLとXAMLの 都合が関係ない 部分 呼び出し イベント監視 XAML と コードビハイ ンド バインドする オブジェクト
30.
XAML系(WPF)でPDSの適用 Domain XAMLとXAMLの 都合が関係ない 部分 呼び出し イベント監視 XAML と コードビハイ ンド バインドする オブジェクト
31.
XAML系(WPF)でPDSの適用 Domain XAMLとXAMLの 都合が関係ない 部分 呼び出し イベント監視 XAML と コードビハイ ンド XAML の状態ストア View ViewModel Model
32.
Domain XAMLとXAML の都合が関係 ない部分 呼び出し イベント監視 XAML と コードビハ インド XAML の状態スト ア View ViewModel Model Notifications View View
ModelViewModel Presentation Logic Business Logic and DataUI and UI Logic(Code behind) Data Binding Commands
33.
Notifications View View ModelViewModel Presentation Logic
Business Logic and DataUI and UI Logic(Code behind) Data Binding Commands Presentation Domain 呼び出し イベント監視
34.
プレゼンテーションモデル Represent the state
and behavior of the presentation independently of the GUI controls used in the interface
35.
プレゼンテーションモデル Controller View Model Presentation Model 委譲 http://martinfowler.com/eaaDev/PresentationModel.html http://www.atmarkit.co.jp/fdotnet/chushin/greatblogentry_10/greatblogentry_10_01.html
36.
MVVMとプレゼンテーションパターン • MVVMは、 Martin
Fowler氏によって導入された特別なプレゼン テーションモデルデザインパターンとして、Microsoftに由来す るソフトウェア工学で使用されるアーキテクチャパターンです • 大部分は、MVCパターンをベースとしており、MVVMは、 HTML5, WPF, Silverlight, ZK Frameworkのようなイベント駆動 プログラミングをサポートするUI開発プラットフォームをター ゲットとしています http://en.wikipedia.org/wiki/MVVM http://ja.wikipedia.org/wiki/Model_View_ViewModel
37.
UIアーキテクチャの違い ドメインロジック の場所 プレゼンテーション ロジックの場所 オブザーバ同期 MVC Model ViewまたはModel
ViewがModelを監 視 プレゼンテー ションモデル Model Presentation Model Viewが PresentaionModel を監視 MVVM Model ViewModel ViewがViewModel を監視 (双方向データバン ド) http://www.atmarkit.co.jp/fdotnet/chushin/greatblogentry_10/greatblogentry_10_01.html
38.
MVVMパターンを適用するためには • ほかのすべての責任分割型のUI設計パターンと同様に、さまざまな シナリオでMVVMパターンを効果的に適用する鍵は、正しいロール を適切にコードとして実装する方法を理解することと、それぞれの 責務がどうやって相互に対話するかをよく理解することです。 • 「各責務が何を担当するのか?」 •
「なぜそうするのか?」 • 「各責務はどうやって対話をするのか?」 • それらを知ることが、MVVMパターンを理解し、それぞれの開発案件に合わ せて応用できるようになることにつながるはずです。 • Prism開発ガイドより
39.
責務 • View • XAMLで記述され、UIの外観と構造を定義します。 •
基本UIのコードビハインドには、初期のInitializeComponentメソッド 以外何も記述されているべきではありません • ViewModel • プレゼンテーション・ロジックとステート(=状態)を持つ • Modelの公開するステートをいちいちラップしてViewに公開するのも ViewModelの役目 • Model • ビジネスドメイン。ビジネスドメインの状態も持つことになる。
40.
MVVM の sample •
HelloWorld程度でMVVMのメリットを享受することは難しいで すが、View 部分、ViewModel部分、Model部分がどのように分 割されているか慣れましょう Demo
41.
参考資料・サイト・文献 • @IT WPF入門 •
http://www.atmarkit.co.jp/ait/subtop/features/da/ap_introwpf_index.html • MVVMパターンの常識 • http://ugaya40.net/mvvm/mvvm-2011.html • http://www.atmarkit.co.jp/fdotnet/chushin/greatblogentry_02/greatblogentry_02_0 1.html • MVVMパターンで学ぶGUIアーキテクチャパターン • http://ugaya40.net/architecture/mvvm_to_mvc.html • Separating User Interface Code • http://martinfowler.com/ieeeSoftware/separation.pdf
Download