Skip to content

takker99/wpf_training

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wpf_training

WPF applicationの自習用repository

色んなサイトのサンプルアプリを通じて、WPF applicationの作り方を学んでいます。

Contents

🚧工事中

sample1

WPF Prism 入門エントリをもとに作っているprogram

解説されているプログラムとは、project設定の違いと使用している.Net platformの違いを除いてほぼ同じプログラムになっています。

sample2

【改訂版】PrismとReactivePropertyで簡単MVVM!をもとに作ったprogram

相違点は以下の通り:

  • Modelの実装なし
    • リンク先のとは違って、入力値もmodelで保持し、DI containerを通じてviewmodelに渡そうとした。しかしviewmodelには全く反映されなかった。
    • おそらくDI containerの使い方と、model<-->viewmodel間の通信方法をまだ理解できていないのが原因だと思う。
    • 別なsample programで通信方法を習得して、できるようになったらこのprogramにも反映させてみる。
  • IdialogServiceを用いたdialogを使用

sample3

WPF アプリを MVVM で作るをもとに作成したprogram

元ネタはLibraryを一切使わずに作成していた。その上modelの捉え方がなんか変に感じた(control=modelとしてしまっている?)。 Prism+ReactivePropertyで実装しなおせばかなり簡単になりそうだったので、それで作り直してみた。

結果: たしかに簡単に作成することができた。ついでに非同期I/Oを使ってみた。またfont sizeを変えられるようにもした。

ただModelの設計がうまく行かなかった (RegisterTypeでinterfaceと一緒に登録したかったが、うまく動かなかった)。こちらのサイトで一通り学習してから、modelを作り直してみることにする。

sample4

Nine Works asyncとIProgressを使ってプログレスバーを操作するをもとに作成したprogram

Livetを使用していた。その部分だけをPrism+ReactivePropertyで書き換えた。

全部実装し終えたと思ったら、なぜかViewModelLocatorで実行時エラーが発生してしまった。そのあたりを重点的に、sample3のコードと突き合わせて間違いを探してみたが、全くわからなかった。仕方なく前のcommitまで巻き戻し、その後少しずつ実行とcommitを繰り返した。

その結果、原因がData BindingのValueのつけ忘れだということがわかった。こッッッんな初歩的なミスに気づかないとか……。まあよくあることだけど。

今後はちゃんと

  1. 少し実装
  2. コードの実行
  3. commit を繰り返すようにしよう。

sample5

WPF Prism episode: 16 ~ Prism7.2、ダイアログは IDialogService でって言ったよね! ~を基に作成予定のprogram

Dialog windowを使ったsample program...なのだが、すぐにdialog windowを使う状況にはならなそうなので、 とりあえずsolutionだけ作り、実際の学習・codingは必要になってからにする。

sample6

WPF MVVM L@bo #5 ~ ようこそ Dapper 至上主義の DataAccess へ ~を基に作成したprogram

元のsample programから必要なfileをコピーし、programの構造を把握しながら名前空間の修正とproject分割をおこなった。DDDを知らないので、programの構造を理解するのにかなり時間がかかった。今でもほとんど理解はしていないが、このprogramの設計の意図は把握できた。

元のsample programからアレンジした機能:

  • console出力から、DataGridを用いた表示に変更
  • DB接続設定ファイルをxmlからjsonに変更

Releases

No releases published

Packages

No packages published

Languages