Skip to content

WPF Prism Sample Application.このリポジトリは古いサンプルです。最新の Prim を使用したサンプルは『 https://github.com/YouseiSakusen/WpfGettingStarted2020 』を見てください。

License

Notifications You must be signed in to change notification settings

YouseiSakusen/WpfPractises

Repository files navigation

:: halation ghost :: WPF Prism episode series Practises

master ブランチの 02_episode03_Prism7.1 ~ 13_episode15 を全て以下の環境に更新しました。
※ 01_episode03 のみ Prism 6.3

  • Visual Studio 2019
  • .NET Framework 4.8
  • Prism 7.2

元々の環境は old-reference ブランチに分岐して残しています。

01_episode03

halation ghost 【WPF Prism episode: 3 ~ Re: ゼロから始める Prism 生活~】 で作成したサンプル。

Prism のプロジェクトを新規作成して Prism の Module を Shell に読み込む部分までを紹介。
Prism の Bootstrapper に設定する内容を紹介しています。

02_episode03_Prism7.1

halation ghost 【WPF Prism episode: 3 ~ Re: ゼロから始める Prism 生活~】 で作成したサンプルの Prism 7.1 対応版。

Prism のプロジェクトを新規作成して Prism の Module を Shell に読み込む部分までを紹介。
Prism 7.1 で変更になった部分も併せて紹介しています。

02_episode04

halation ghost 【WPF Prism episode: 4 ~ DI だけど Unity さえあれば関係ないよねっ~】 で作成したサンプル。

Prism の Shell ⇔ Module 間で受け渡すデータをプロジェクト作成時に選択した DI コンテナ(ここでは Unity)を介してやり取りするサンプル。

03_episode05

halation ghost 【WPF Prism episode: 4.5 ~ ReactiveProperty からはじまる MVVM 狂想曲 ~】
halation ghost 【WPF Prism episode: 5 ~ TreeView の MVVM には ReactiveProperty が埋まっている ~】 で作成したサンプル。

MVVM パターンで TreeView へデータをバインドするサンプル。
TreeView の各 Item 毎に VM を用意してバインドする例を紹介しています。
MVVM パターン入門で紹介したサンプルプロジェクトを追加。(2019/4/18 追記)

04_episode06

halation ghost 【WPF Prism extra: 1 ~ TreeViewItem を MVVM パターンで展開する ~】
halation ghost 【WPF Prism episode: 6 ~ されどイベントは ViewModel と踊る ~】
halation ghost 【WPF Prism episode: 6.5 ~ いつだって Prism の画面遷移は RequestNavigation だった。 ~】で作成したサンプル。

EventToReactiveCommand(View 側)と ReactiveCommand(VM 側) を利用して TreeView.SelectedItemChanged イベントを VM 処理するサンプル。
イベントパラメータ(EventArgs)を受け取って Prism の RequestNavigation メソッドで別の View に切り替えるまでを紹介しています。 又、extra: 1 では TreeViewItem.IsExpanded プロパティをバインドする方法を紹介しています。

05_episode07

halation ghost 【WPF Prism extra: 2 ~ TreeViewItem を MVVM パターンで選択する ~】
halation ghost 【WPF Prism episode: 7 ~ 画面遷移のパラメータたちが INavigationAware から来るそうですよ? ~】 で作成したサンプル。

Prism の NavigationContext と INavigationAware を利用して遷移先画面の VM にパラメータを渡すサンプル。
View と VM は Prism の BindableBase でバインドする例を紹介。 UserControl.Loaded イベントを ReactiveCommand とバインドして TreeView の SelectedItem を設定するサンプルも含んでいます。

06_episode08

halation ghost 【WPF Prism extra: 3 ~ とある TreeView の状況一覧 (Context menu) ~】
halation ghost 【WPF Prism episode: 8 ~ ReactiveProperty がバインドできないのはどう考えても Navigation が悪い! ~】 で作成したサンプル。

List 型メンバを編集するための View がどのメンバに対応する View かを Prism の INavigationAware.IsTarget を使用して判定するサンプル。
TreeView に追加したコンテキストメニューから ReactiveCollection へ項目を追加すると TreeView に子 Item が追加されるサンプルも併せて紹介しています。
又、ReactiveCommand からコントロールの IsEnabled を設定する方法や ReactiveProperty を使用して VM ⇔ Model 間を双方向でバインドするサンプルも含んでいます。

07_episode09

halation ghost 【WPF Prism episode: 9、9' ~ ReactiveProperty の Validation は DataAnnotation じゃないと思った?~】 で作成したサンプル。
halation ghost 【WPF Prism extra: 4 ~ Extended WPF Toolkit™ で数値と日付を入力 ~】 で作成したサンプル。

ReactiveProperty へバリデーション(DataAnnotation)を設定するサンプルと Xceed の Extended WPF Toolkit™ を使用するサンプル。

08_episode10

halation ghost 【WPF Prism episode: 10 ~ ErrorTemplate は Resources タグ、時々、ResourceDictionary ファイルのなか。~】 で作成したサンプル。

episode: 9、9' で設定したバリデーションの ErrorTemplate を設定するサンプル。

09_episode11

halation ghost 【WPF Prism episode: 11 ~ Prism が画面遷移キャンセルするのは IConfirmNavigationRequest だけど INavigationAware じゃない~】 で作成したサンプル。

Prism の IConfirmNavigationRequest を使用して画面遷移をキャンセルするサンプル。

10_episode12

halation ghost 【WPF Prism episode: 12 ~ Prism メッセージボックスの Service な日常 ~】 で作成したサンプル。

Prism 組み込みのメッセージボックスを表示するサンプル。

11_episode13

halation ghost 【WPF Prism episode: 13 ~ カスタマイズしたらメッセージボックスだった件 ~】 で作成したサンプル。

Prism 組み込みのメッセージボックスをカスタマイズするサンプル。

12_episode14

halation ghost 【WPF Prism episode: 14 ~ ListBox 相手は ReactiveCollection、ダイアログな、Prism。 ~】 で作成したサンプル。

Prism からダイアログウィンドウを表示するサンプル。

13_episode15

halation ghost 【WPF Prism episode: 15 ~ FolderBrowserDialog の為ならば、Prism の InteractionRequest はもしかしたらコモンダイアログも Popup できるかもしれない。 ~】 で作成したサンプル。

Prism から FolderBrowserDialog や OpenFileDialog 等のコモンダイアログを表示するサンプル。

14_episode16

halation ghost 【WPF Prism episode: 16 ~ Prism7.2、ダイアログは IDialogService でって言ったよね! ~】 で作成したサンプル。

Prism 7.2 から新たに追加された IDialogService でダイアログを表示するサンプル。

15_episode17

halation ghost 【WPF Prism episode: 17 ~ IDialogService にコモンダイアログを求めるのは間違っているだろうか ~】
halation ghost 【WPF Prism extra: 5 ~ ReactvieProperty の変更通知を Subscribe して MVVM 的にデータを更新する ~】 で作成したサンプル。

Prism からファイルを開くダイアログやファイルに名前を付けて保存ダイアログ等のコモンダイアログを表示するサンプル。 Window API Code Pack のフォルダ選択ダイアログを表示する方法も含んでいます。

16_episode18/PrismNetCoreApp

halation ghost 【WPF Prism episode: 18 ~ Livet が Prism に「IDisposable 呼び出し用」としてゲッツされた件 ~】

Prism 7.2 で追加された IDestractible と分割導入できるようになった Livet を Prism で作成したサンプルに導入してWindow Close 時に Window と UserControl の VM を Disposeするサンプル。
今回からプロジェクトのフレームワークを .NET Core に変更しています。

17_episode19/PrismNetCoreApp

halation ghost 【WPF Prism episode: 19 ~ MahApps.Metro と Material Design In XAML Toolkit たちは Prism でも余裕で生き抜くようです! ~】

サンプルアプリに MahApps.Metro と Material Design In XAML Toolkit をインストールしてマテリアルデザイン風の画面にするサンプル。

18_episode20

halation ghost 【WPF Prism episode: 20 ~ Prism ダイアログに MahApps.Metro が舞い降りた! ~】

Prism の IDialogService から表示するメッセーボックスやダイアログウィンドウを MahApps.Metro の MetroWindow にするサンプル。
Window Close 時に問い合わせメッセージを表示して Window Close をキャンセルするサンプルも含んでいます。

QA_MvvmSampleApp

halation ghost episode: 16 のコメントに書かれた質問への回答用サンプル。

Prism + ReactivePropertyでMVVMアプリを作成するためには定石とも言える構造を紹介するために作成したサンプル。
モデル層の変更をReactivePropertyを使用してVMへ伝播する方法を理解するのに向いていると思います。

QA_VmLoadTest

halation ghost episode: 16 のコメントに書かれた質問への回答用サンプル。

Prism Shell起動時にPrism ModuleのViewを非表示でLoadしたい場合の裏技的な方法を紹介するためのサンプル。 重いViewをアプリ起動時にあらかじめLoadしておきたい場合を想定していますがあまりお勧めの方法とは言えないような気がします。

About

WPF Prism Sample Application.このリポジトリは古いサンプルです。最新の Prim を使用したサンプルは『 https://github.com/YouseiSakusen/WpfGettingStarted2020 』を見てください。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages