{"id":20661125,"url":"https://github.com/takker99/wpf_training","last_synced_at":"2026-05-06T19:37:04.772Z","repository":{"id":103154228,"uuid":"252072276","full_name":"takker99/wpf_training","owner":"takker99","description":"WPF+Prism+ReactiveProperty自習用repository","archived":false,"fork":false,"pushed_at":"2020-04-26T04:33:16.000Z","size":309,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-17T12:16:40.067Z","etag":null,"topics":["csharp","dotnet-core","dotnetcore","learning","prism","reactiveproperty","wpf"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/takker99.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-01T04:31:58.000Z","updated_at":"2020-04-25T01:54:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"3975a1a9-15a7-427d-81bb-6c36e7751e9d","html_url":"https://github.com/takker99/wpf_training","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takker99%2Fwpf_training","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takker99%2Fwpf_training/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takker99%2Fwpf_training/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takker99%2Fwpf_training/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/takker99","download_url":"https://codeload.github.com/takker99/wpf_training/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242788361,"owners_count":20185257,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","dotnet-core","dotnetcore","learning","prism","reactiveproperty","wpf"],"created_at":"2024-11-16T19:07:21.081Z","updated_at":"2025-12-05T19:02:06.212Z","avatar_url":"https://github.com/takker99.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# wpf_training\n\nWPF applicationの自習用repository\n\n色んなサイトのサンプルアプリを通じて、WPF applicationの作り方を学んでいます。\n\n## Contents\n\n\u003e:construction:工事中\n\n### sample1\n\n[WPF Prism 入門エントリ](https://elf-mission.net/wpf-prism-index/)をもとに作っているprogram\n\n解説されているプログラムとは、project設定の違いと使用している.Net platformの違いを除いてほぼ同じプログラムになっています。\n\n### sample2\n\n[【改訂版】PrismとReactivePropertyで簡単MVVM！](https://qiita.com/hiki_neet_p/items/e04b5ac692aa18df0968)をもとに作ったprogram\n\n相違点は以下の通り：\n- Modelの実装なし\n  - リンク先のとは違って、入力値もmodelで保持し、DI containerを通じてviewmodelに渡そうとした。しかしviewmodelには全く反映されなかった。\n  - おそらくDI containerの使い方と、model\u003c--\u003eviewmodel間の通信方法をまだ理解できていないのが原因だと思う。\n  - 別なsample programで通信方法を習得して、できるようになったらこのprogramにも反映させてみる。\n- IdialogServiceを用いたdialogを使用\n  - 実装は[WPF Prism episode: 16 ～ Prism7.2、ダイアログは IDialogService でって言ったよね！ ～](https://elf-mission.net/programming/wpf/episode16/)をほぼ踏襲。\n\n### sample3\n\n[WPF アプリを MVVM で作る](https://qiita.com/seka/items/50d253c824e8914f937e)をもとに作成したprogram\n\n元ネタはLibraryを一切使わずに作成していた。その上modelの捉え方がなんか変に感じた(control=modelとしてしまっている？)。\nPrism+ReactivePropertyで実装しなおせばかなり簡単になりそうだったので、それで作り直してみた。\n\n**結果:**\nたしかに簡単に作成することができた。ついでに非同期I/Oを使ってみた。またfont sizeを変えられるようにもした。\n\nただModelの設計がうまく行かなかった (RegisterTypeでinterfaceと一緒に登録したかったが、うまく動かなかった)。[こちらのサイト](https://elf-mission.net/wpf-prism-index/)で一通り学習してから、modelを作り直してみることにする。\n\n### sample4\n\n[Nine Works　asyncとIProgressを使ってプログレスバーを操作する](http://nineworks2.blog.fc2.com/blog-entry-4.html)をもとに作成したprogram\n\nLivetを使用していた。その部分だけをPrism+ReactivePropertyで書き換えた。\n\n全部実装し終えたと思ったら、なぜかViewModelLocatorで実行時エラーが発生してしまった。そのあたりを重点的に、sample3のコードと突き合わせて間違いを探してみたが、全くわからなかった。仕方なく前のcommitまで巻き戻し、その後少しずつ実行とcommitを繰り返した。\n\nその結果、原因がData BindingのValueのつけ忘れだということがわかった。こッッッんな初歩的なミスに気づかないとか……。まあよくあることだけど。\n\n今後はちゃんと\n1. 少し実装\n2. **コードの実行**\n3. commit\nを繰り返すようにしよう。\n\n### sample5\n\n[WPF Prism episode: 16 ～ Prism7.2、ダイアログは IDialogService でって言ったよね！ ～](https://elf-mission.net/programming/wpf/episode16/)を基に作成予定のprogram\n\nDialog windowを使ったsample program...なのだが、すぐにdialog windowを使う状況にはならなそうなので、\nとりあえずsolutionだけ作り、実際の学習・codingは必要になってからにする。\n\n### sample6\n\n[WPF MVVM L@bo #5 ～ ようこそ Dapper 至上主義の DataAccess へ ～](https://elf-mission.net/programming/wpf/mvvm-labo/phase05/)を基に作成したprogram\n\n元のsample programから必要なfileをコピーし、programの構造を把握しながら名前空間の修正とproject分割をおこなった。DDDを知らないので、programの構造を理解するのにかなり時間がかかった。今でもほとんど理解はしていないが、このprogramの設計の意図は把握できた。\n\n元のsample programからアレンジした機能：\n- console出力から、DataGridを用いた表示に変更\n- DB接続設定ファイルをxmlからjsonに変更\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakker99%2Fwpf_training","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftakker99%2Fwpf_training","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakker99%2Fwpf_training/lists"}