tag:crieit.net,2005:https://crieit.net/tags/%E3%81%B4%E3%82%87%E3%82%80%E3%83%BC%EF%BC%88%EF%BC%BE%EF%BD%9E%EF%BC%BE%EF%BC%89/feed 「ぴょむー(^~^)」の記事 - Crieit Crieitでタグ「ぴょむー(^~^)」に投稿された最近の記事 2022-12-22T20:38:37+09:00 https://crieit.net/tags/%E3%81%B4%E3%82%87%E3%82%80%E3%83%BC%EF%BC%88%EF%BC%BE%EF%BD%9E%EF%BC%BE%EF%BC%89/feed tag:crieit.net,2005:PublicArticle/18348 2022-12-22T20:38:37+09:00 2022-12-22T20:38:37+09:00 https://crieit.net/posts/WPF-1 WPF演習問題1 デスクトップ上のちり紙 <p><a href="https://crieit.now.sh/upload_images/bd7d01944e89627c3a673fafc323359e61489f46f18c8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bd7d01944e89627c3a673fafc323359e61489f46f18c8.png?mw=700" alt="20210920wpf241.png" /></a></p> <h1 id="気の早い人向け"><a href="#%E6%B0%97%E3%81%AE%E6%97%A9%E3%81%84%E4%BA%BA%E5%90%91%E3%81%91">気の早い人向け</a></h1> <p><a href="https://crieit.now.sh/upload_images/57e9caa56af039a17e265284829008d5614c9744f3aea.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/57e9caa56af039a17e265284829008d5614c9744f3aea.png?mw=700" alt="20210923wpf417a1.png" /></a><br /> (👆 2021年の現代で Windows専用の縛りがあって 誰が興味持つのか分からないが……)</p> <p><a href="https://crieit.now.sh/upload_images/c9d3bab7cb1075e6b06b281e1162c48e614b2aa3e78fa.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c9d3bab7cb1075e6b06b281e1162c48e614b2aa3e78fa.gif?mw=700" alt="20210922gif5.gif" /></a><br /> (👆 この記事で 作れるもの)</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/muzudho/wpf-exercise-dust-paper-on-desktop">wpf-exercise-dust-paper-on-desktop</a> - Git hub に上げたもの</p> <h1 id="今回の話し"><a href="#%E4%BB%8A%E5%9B%9E%E3%81%AE%E8%A9%B1%E3%81%97">今回の話し</a></h1> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 Webアプリ15年ぐらい経験あるんで、 WPF? 応用で 簡単 簡単、と思って 面談通って 派遣入場したら WPF 思ってたやつと全然違った」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 お父んが 持ってないスキルだったもんな、 <strong>MVVM</strong>。 持ってないスキルで 派遣入場決めたの わらう」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 座学退屈なんで 手を動かして 作りながら スキルを身に付けれるような 演習問題、わたしが欲しいのに無いんで 自分で作るぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 1990年代は プログラミング月刊雑誌 いっぱいあったのよ。 12か月購読すれば アプリケーションが1つ作れます、みたいな」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 わたしが 無料で提供」</p> <p><a href="https://crieit.now.sh/upload_images/4e66c6cac968b70de235bdaef0380224614606cf2eed7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4e66c6cac968b70de235bdaef0380224614606cf2eed7.png?mw=700" alt="20210919wpf122.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 Windows のアプリケーションを作るぞ! と思って 最初にやりたくなるのは Windows みたいな ウィンドウを消すことだと思うんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 まだ ウィンドウも出したことないのに……」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 だから最初の演習問題 『デスクトップ上のちり紙』 では Windows みたいなウィンドウを消すことをやるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 この演習問題の所要時間は、 どれぐらい初心者かにもよるが 集中すれば 土曜日1個消し飛ぶ程度で済むぐらいを想定」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 <strong>この記事はどんどん転載したり、生配信したり コピー、加工しまくれだぜ</strong><br /> ただし 何も正しさは保証しないし この記事を元に何かして損害が起こっても責任は取らないぜ」</p> <h1 id="Step 1. Visual Studio 2022 導入"><a href="#Step+1.+Visual+Studio+2022+%E5%B0%8E%E5%85%A5">Step 1. Visual Studio 2022 導入</a></h1> <p><a href="https://crieit.now.sh/upload_images/ab9ee679ae1b15e6bc148167ebb67a216148325204c8f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ab9ee679ae1b15e6bc148167ebb67a216148325204c8f.png?mw=700" alt="20210920wpf170-25per.png" /></a><br /> 📖 <a href="https://crieit.net/drafts/6148107a99a70">Visual Studio 2022 Preview をインストールしようぜ(^~^)?</a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 別記事を読んできてくれだぜ」</p> <h1 id="Step 2. 新規プロジェクト作成"><a href="#Step+2.+%E6%96%B0%E8%A6%8F%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E4%BD%9C%E6%88%90">Step 2. 新規プロジェクト作成</a></h1> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 おっ、 <code>Visual Studio 2022 Preview Community</code> のインストールは終わったかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/0142fd2fb8ffe94c80fcd537fdc718f161481d24d9686.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0142fd2fb8ffe94c80fcd537fdc718f161481d24d9686.png?mw=700" alt="20210920wpf156a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[新しいプロジェクトの作成(N)]</code> をクリックするか、 <code>[Alt] + [N]</code> キーを打鍵するかしろだぜ」</p> <h2 id="Step 2-1. アクセラレーター キー"><a href="#Step+2-1.+%E3%82%A2%E3%82%AF%E3%82%BB%E3%83%A9%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC+%E3%82%AD%E3%83%BC">Step 2-1. アクセラレーター キー</a></h2> <p><a href="https://crieit.now.sh/upload_images/dd01dfa9955d7b21b3749a67295d0cea614edb7c53cf8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/dd01dfa9955d7b21b3749a67295d0cea614edb7c53cf8.png?mw=700" alt="20210925wpf472a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 メニューや、ボタンの名前の後ろに 丸かっこに入って アンダースコア(下線)が引かれている英字大文字は<br /> 古い言い方で ニーモニック(mnemonic)、 一般的には <code>アクセラレーター キー(Accelerator keys)</code> と呼ぶもので、<br /> <code>[Alt]</code> キーを押しながら そのアルファベットのキーを ちょんと押すと クリックしたのと同じ動きをするぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 Web系では 無くなった文化よね」</p> <p><a href="https://crieit.now.sh/upload_images/7d6b32ceac04fca7348a75f04426eec3614ee81f54433.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7d6b32ceac04fca7348a75f04426eec3614ee81f54433.png?mw=700" alt="20210925wpf476a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[Alt]</code> というのは オルタネート キー(Alternate key) とか オルト と呼んでるもので、<br /> このキーを押したからといって 何かが起こるわけではないが、別のキーと組み合わせて使うぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f875072afd5b3ad68461c3e61868fb7e614ee9dda3c82.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f875072afd5b3ad68461c3e61868fb7e614ee9dda3c82.png?mw=700" alt="20210925wpf477.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[Alt] + [N]</code> キーと言う場合、 オルト キーと N キーを 一緒に押すのではなく……」</p> <p><a href="https://crieit.now.sh/upload_images/78c265575fab3ff975db0f6a8018608e614eea6ee498c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/78c265575fab3ff975db0f6a8018608e614eea6ee498c.png?mw=700" alt="20210925wpf478.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[Alt]</code> キーを押しっぱなしにしながら、 <code>[N]</code> キーを ちょん と押し下げて すぐ 離せだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 こだわりだな」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 大阪日本橋の近くに住んでたから こういうことを 一通り教えてくれる コンピューター オタク の先輩が近所にいたけど、<br /> それは <strong>特異</strong> なことで、世の中 そんな人は 近所にはいないのよ 。<br /> 世間の人は ネットの切れ端みたいな記事みて プログラムを 断片的に覚えるのよ。<br /> その構造に うらみの根を持って こういう一気通貫の <strong>長い</strong> 記事かいてんのよ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 逆恨み わらう」</p> <p><a href="https://crieit.now.sh/upload_images/f3f71cb42f7dd5f347b2cd875e974ce561481e004e239.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f3f71cb42f7dd5f347b2cd875e974ce561481e004e239.png?mw=700" alt="20210920wpf157a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>C#</code>、 <code>すべてのプラットフォーム</code>、 <code>デスクトップ</code>、 <code>WPF Application</code> をクリックして <code>[次へ(N)]</code> をクリックしろだぜ。<br /> ここで、 <code>.NET Framework</code> と付いてあるのは レガシー(時代遅れ)なんで選ぶなだぜ。付いてないのを選べだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 ややこし!」</p> <p><a href="https://crieit.now.sh/upload_images/002a9695988fb92ce3449ce91ac7674a614ede8f7c047.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/002a9695988fb92ce3449ce91ac7674a614ede8f7c047.png?mw=700" alt="20210925wpf473a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 次の画面にも アクセラレーター キー いっぱいついてるな」</p> <p><a href="https://crieit.now.sh/upload_images/8b7520f9283fb3e1f2a7177509b832f9614edfd00a754.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8b7520f9283fb3e1f2a7177509b832f9614edfd00a754.png?mw=700" alt="20210925wpf474a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 3点リーダーは ダイアログボックスが ポップアップしてくる印だぜ」</p> <h2 id="Step 2-2. フォーカス"><a href="#Step+2-2.+%E3%83%95%E3%82%A9%E3%83%BC%E3%82%AB%E3%82%B9">Step 2-2. フォーカス</a></h2> <p><a href="https://crieit.now.sh/upload_images/7fc120888f691173955b0e5246bbfa42614ee14eb0193.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7fc120888f691173955b0e5246bbfa42614ee14eb0193.png?mw=700" alt="20210925wpf475a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 また、テキストボックスに これから文字を入力しようというとき、テキストボックスは <code>フォーカス(Focus)</code> を持っていると言うぜ」</p> <h2 id="Step 2-3. タブ オーダー"><a href="#Step+2-3.+%E3%82%BF%E3%83%96+%E3%82%AA%E3%83%BC%E3%83%80%E3%83%BC">Step 2-3. タブ オーダー</a></h2> <p><a href="https://crieit.now.sh/upload_images/3a5251915a9fcce15df85a530b542fda614ee25f5a3df.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3a5251915a9fcce15df85a530b542fda614ee25f5a3df.gif?mw=700" alt="20210925gif6.gif" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[Tab]</code> キーを打鍵すると、フォーカスは 次の クリックできるところへ飛ぶぜ。 これを特に専門用語は無いが、 <code>タブ オーダー(Tab Order)</code> とか呼ぶぜ」</p> <p><a href="https://crieit.now.sh/upload_images/42828dc977e45a3104d49a1e8296538b614ee344c5b03.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/42828dc977e45a3104d49a1e8296538b614ee344c5b03.gif?mw=700" alt="20210925gif7.gif" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[Shift] - [Tab]</code> キーを打鍵すると 逆回りだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 タブ オーダーは Web系にもあるわねぇ」</p> <p><a href="https://crieit.now.sh/upload_images/0bae517e78db1788ccf9a41cf241b91b61481f1c8c49d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0bae517e78db1788ccf9a41cf241b91b61481f1c8c49d.png?mw=700" alt="20210920wpf158a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[プロジェクト名]</code> は <code>WpfExerciseDustPaperOnDesktop</code> にでもしろだぜ。<br /> <code>[場所]</code> はデフォルトのままでもいい。わたしは <code>C\GitHub</code> というフォルダーを作って そこに置いてるけど」</p> <p><a href="https://crieit.now.sh/upload_images/b7445e33b5c6927eae4c7aff4fbb520861481ffb828db.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b7445e33b5c6927eae4c7aff4fbb520861481ffb828db.png?mw=700" alt="20210920wpf159.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 わたしも知らんけど 今年の11月ぐらいには出てくるらしい <code>.NET 6.0(プレビュー)</code> にしよかな」</p> <p><a href="https://crieit.now.sh/upload_images/2324e376133b77316d749028bfefb620614820c516c3e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2324e376133b77316d749028bfefb620614820c516c3e.png?mw=700" alt="20210920wpf160.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 開発画面が出てきたぜ。 前の <code>Visual Studio 2019</code> とパッと見た感じ 変わってない感じ」</p> <p><a href="https://crieit.now.sh/upload_images/6b03857f9bef715a0126a130d3516cbb6148219fc6afa.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6b03857f9bef715a0126a130d3516cbb6148219fc6afa.png?mw=700" alt="20210920wpf161a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 プロジェクト名を後で変えたくなったときは、 右上の ソリューション エクスプローラーの ツリー構造の2段目を右クリックして<br /> <code>[名前の変更(M)]</code> を選ぶか、または <code>[F2]</code> キーを打鍵すれば変更できるんだが……」</p> <p><a href="https://crieit.now.sh/upload_images/d47957fb862b19a161c1d720546c0e93614eed12e772d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d47957fb862b19a161c1d720546c0e93614eed12e772d.png?mw=700" alt="20210925wpf479.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 <code>[F2]</code> は ファンクション キー(Function Key) だな」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 ファンクション キーも 本来は 好きに使っていい ショートカットのためのキー だったと思うんだが、<br /> Windows になると <code>F1</code> は ヘルプだとか <code>F2</code> は名前変えるだとか、 使い方が固定されてきた」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 慣習を引き継ぐのは 古い世代に任せて、 いち から コンピューターはどうあるべきか 今の文化を 見直そう、という動きがあっても いいと思ったら<br /> デスクトップPC 丸ごと無視して みな スマホ の方に行ってしまった」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 現代日本は スマホ先進国かも」</p> <p><a href="https://crieit.now.sh/upload_images/9f56509572556dc8df3040c9f363f260614afd2d098b6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9f56509572556dc8df3040c9f363f260614afd2d098b6.png?mw=700" alt="20210920wpf160a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 自動で変更してくれない 残り が どこかにあったりするんで、<br /> 詳しくないうちは プロジェクト名を付け間違えたら 最初からやり直せだぜ」</p> <h1 id="Step 3. NuGetでLivet インストール"><a href="#Step+3.+NuGet%E3%81%A7Livet+%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">Step 3. NuGetでLivet インストール</a></h1> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👇 WPF を開発するのに 何かフレームワークを入れておかないと ぜんぜんできないんで、フレームワークは Livet を選ぶぜ」</p> <p><a href="https://crieit.now.sh/upload_images/9c3442fac466720ab2abada63bbe27ce6148226b84092.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9c3442fac466720ab2abada63bbe27ce6148226b84092.png?mw=700" alt="20210920wpf162a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[ツール] - [NuGet パッケージ マネージャー] - [ソリューション NuGet パッケージの管理]</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/38c63e81e5be9e0a5f853483fa91ef30614825fde5dc1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/38c63e81e5be9e0a5f853483fa91ef30614825fde5dc1.png?mw=700" alt="20210920wpf163a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[参照]</code> タブをクリックして検索ボックスに <code>Livet</code> と打鍵し、 <code>LivetCask</code> を選んで プロジェクトの横のチェックボックスをクリックして <code>インストール</code> しろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 インストールが終わったら NuGet のページは閉じろだぜ」</p> <h1 id="Step 4. 画面見やすいように整えろ"><a href="#Step+4.+%E7%94%BB%E9%9D%A2%E8%A6%8B%E3%82%84%E3%81%99%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E6%95%B4%E3%81%88%E3%82%8D">Step 4. 画面見やすいように整えろ</a></h1> <p><a href="https://crieit.now.sh/upload_images/14b11c44f46668714a3868c8f1782da16148336ad3ace.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/14b11c44f46668714a3868c8f1782da16148336ad3ace.png?mw=700" alt="20210920wpf164.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 今 こんな感じの画面かも知れないな。<br /> このままでは 使いにくいかも知れないから……」</p> <p><a href="https://crieit.now.sh/upload_images/64d63d7a8c3fcf8f62364aee6ebbf217614833c20a6ca.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/64d63d7a8c3fcf8f62364aee6ebbf217614833c20a6ca.png?mw=700" alt="20210920wpf171-25per.png" /></a><br /> 📖 <a href="https://crieit.net/drafts/61482911c367f">WPF開発してるときの、画面の整え方をまとめようぜ(^~^)</a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 画面を整える方法を まとめたんで 上の記事を読めだぜ」</p> <h1 id="Step 5. 定番のフォルダー作れ"><a href="#Step+5.+%E5%AE%9A%E7%95%AA%E3%81%AE%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E4%BD%9C%E3%82%8C">Step 5. 定番のフォルダー作れ</a></h1> <p><a href="https://crieit.now.sh/upload_images/70990a8f3291ae42b047adfab7a9c4596148535989c9f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/70990a8f3291ae42b047adfab7a9c4596148535989c9f.png?mw=700" alt="20210920wpf184a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ソリューション エクスプローラーの2つ目ぐらいにある プロジェクトを右クリック、<br /> <code>[追加] - [新しいフォルダー]</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f3a72938d62da61b6b15e5b668db17ac6148540722a36.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f3a72938d62da61b6b15e5b668db17ac6148540722a36.png?mw=700" alt="20210920wpf185a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 名前を入れろだぜ。<br /> ここでは <code>ViewModels</code> と <code>Views</code> という名前の2つのフォルダーを作れだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/1bf85fd42c33fa3b0e5b3dbdb31a0ddd61485495c586e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1bf85fd42c33fa3b0e5b3dbdb31a0ddd61485495c586e.png?mw=700" alt="20210920wpf186a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 名前を入れ間違えたら、 <code>[F2]</code> キーを打鍵すれば リネームできるぜ」</p> <h1 id="Step 6. 実行しろ"><a href="#Step+6.+%E5%AE%9F%E8%A1%8C%E3%81%97%E3%82%8D">Step 6. 実行しろ</a></h1> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 まだ何もプログラム書いてないが、最初から ウィンドウを表示するぐらいのことはできる。やってみようぜ」</p> <p><a href="https://crieit.now.sh/upload_images/200f31585819d337a645355d9d1c7b76614856cf1e9b8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/200f31585819d337a645355d9d1c7b76614856cf1e9b8.png?mw=700" alt="20210920wpf187a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 標準ツールバーの 右向いてる緑色の三角形みたいなボタンをクリックしてみろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/2c01d28325b9e08748874bd2a757347a6148572b5108e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2c01d28325b9e08748874bd2a757347a6148572b5108e.png?mw=700" alt="20210920wpf188.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 Visual Studio のウィンドウのレイアウトが がらりと変わって、 なんか 白いウィンドウが出てきただろ。<br /> じゃ、その 出てきた白いウィンドウを 閉じろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/67bdc0ca3c903122d3cbd42cfa56fffa614857cc46bb6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/67bdc0ca3c903122d3cbd42cfa56fffa614857cc46bb6.png?mw=700" alt="20210920wpf189a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ソリューション エクスプローラーの プロジェクト名を右クリックして <code>エクスプローラーでフォルダーを開く</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/736071f5ad567bd07f7253c78d3b5e436148585a66bec.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/736071f5ad567bd07f7253c78d3b5e436148585a66bec.png?mw=700" alt="20210920wpf190a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>Windows ファイル エクスプローラー</code> が出てくるので、 <code>bin</code> フォルダーの中を開けていけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d13032a881993a361b1a926d435c0a03614858df3f056.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d13032a881993a361b1a926d435c0a03614858df3f056.png?mw=700" alt="20210920wpf191a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>.exe</code> ファイルができてるから、ダブルクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/fc9ec11a2bb9a30a11b77e48dbd261eb614859318b5e2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fc9ec11a2bb9a30a11b77e48dbd261eb614859318b5e2.png?mw=700" alt="20210920wpf192.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 じゃあ さっきの 白いウィンドウが出てきたな。 これが 実行ファイル の作り方の基本だぜ」</p> <h1 id="Step 6. タイトル バー消せ"><a href="#Step+6.+%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB+%E3%83%90%E3%83%BC%E6%B6%88%E3%81%9B">Step 6. タイトル バー消せ</a></h1> <p><a href="https://crieit.now.sh/upload_images/28dcbfe3256ee601fd29e184a67a22c6614861a0db932.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/28dcbfe3256ee601fd29e184a67a22c6614861a0db932.png?mw=700" alt="20210920wpf200a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ソリューション エクスプローラー上で <code>MainWindow.xaml</code> をダブルクリックしろだぜ。<br /> デザイナーが出てくるな」</p> <p><a href="https://crieit.now.sh/upload_images/8bc7d00c8b391ec99554443923679ac06148631fec7d8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8bc7d00c8b391ec99554443923679ac06148631fec7d8.png?mw=700" alt="20210920wpf201a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>XAML</code> の方の <code><Window</code> という要素名を狙って マウスカーソルでクリックしろだぜ。<br /> プロパティが出てくるな」</p> <p><a href="https://crieit.now.sh/upload_images/9f9034a04b30b540d28a3f7814d1cb63614863a8a8b0d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9f9034a04b30b540d28a3f7814d1cb63614863a8a8b0d.png?mw=700" alt="20210920wpf202a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 プロパティ ペーンの <code>[雷マーク] - [カテゴリ] - [外観] - [WindowStyleのドロップダウンリストの三角ボタン] - [None]</code> を選べだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/fe1a4b59f54dc1438e302027f86c302c61486496ee663.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fe1a4b59f54dc1438e302027f86c302c61486496ee663.png?mw=700" alt="20210920wpf203a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 すると XAML の方に <code>WindowStyle="None"</code> が付いたな」</p> <p><a href="https://crieit.now.sh/upload_images/7b877014904cc72baadaf778329cfd57614874ec6ebd8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7b877014904cc72baadaf778329cfd57614874ec6ebd8.png?mw=700" alt="20210920wpf203a3.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 こんな感じに覚えておけだぜ。<br /> プロパティ ペーンで設定したものは XAML のタグのアトリビュートに付く、ぐらいの規則性に気づけだぜ。<br /> アトリビュートに どんな風に付くかは、なんかシンプルに付くと思っておけだぜ、今のところは」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 慣れてきたら XAML のテキストを直接 編集しろってことなのかしら」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 XAMLはテキストなんで、コピー 貼り付け も利くしな。規則性の分かってきたプログラマーは XAML 直接編集だよな」</p> <h1 id="Step 7. XMLの 単独タグ"><a href="#Step+7.+XML%E3%81%AE+%E5%8D%98%E7%8B%AC%E3%82%BF%E3%82%B0">Step 7. XMLの 単独タグ</a></h1> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 このステップの話しは むずかしいんで、 <strong>読み飛ばして</strong> 構わないぜ。必要になったら読めばいい」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 XML(エックス・エム・エル)の読み方を簡単に説明するぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5b2e7eda973b0d486edde1715c073eef614f587cc6006.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b2e7eda973b0d486edde1715c073eef614f587cc6006.png?mw=700" alt="20210925wpf508a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 <code><</code> と <code>></code> で挟まれたものを <strong>タグ</strong> と呼んでいるのは分かると思うが、うしろの括弧に <code>/</code> (スラッシュ)が付いている <code>/></code> を持つものは、<br /> なんか 単独なんだな、と思っておけだぜ」</p> <h2 id="Step 7-1. 開きタグ、閉じタグ"><a href="#Step+7-1.+%E9%96%8B%E3%81%8D%E3%82%BF%E3%82%B0%E3%80%81%E9%96%89%E3%81%98%E3%82%BF%E3%82%B0">Step 7-1. 開きタグ、閉じタグ</a></h2> <p><a href="https://crieit.now.sh/upload_images/b4b76ebc20157a6834a4b2b36d33e27a614f599b7b203.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b4b76ebc20157a6834a4b2b36d33e27a614f599b7b203.png?mw=700" alt="20210925wpf508a2.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <strong>要素</strong> (Element;エレメント) は <strong>開きタグ</strong> と <strong>閉じタグ</strong> で作れるやつもあるぜ。<br /> どう使い分けるのかというと……」</p> <h2 id="Step 7-2. 子要素、親要素"><a href="#Step+7-2.+%E5%AD%90%E8%A6%81%E7%B4%A0%E3%80%81%E8%A6%AA%E8%A6%81%E7%B4%A0">Step 7-2. 子要素、親要素</a></h2> <p><a href="https://crieit.now.sh/upload_images/35b1588bab4689ef8ee71d2063f1fac4614f5ad54cac0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/35b1588bab4689ef8ee71d2063f1fac4614f5ad54cac0.png?mw=700" alt="20210925wpf508a3.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 閉じタグ、開きタグに分かれている方は、間に 子要素 などを挟めるわけだぜ。<br /> 何も挟まない要素は 単独タグ が使いやすいぜ」</p> <h2 id="Step 7-3. アトリビュート"><a href="#Step+7-3.+%E3%82%A2%E3%83%88%E3%83%AA%E3%83%93%E3%83%A5%E3%83%BC%E3%83%88">Step 7-3. アトリビュート</a></h2> <p><a href="https://crieit.now.sh/upload_images/8cf8b4e811312c96c7260887d126f6f2614f5d37c2c45.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8cf8b4e811312c96c7260887d126f6f2614f5d37c2c45.png?mw=700" alt="20210925wpf508a4.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 また 単独タグ、または 開きタグは、 <code>属性名="属性値"</code> という形で 名前と値(Value;あたい)のペアを持てるぜ。<br /> これを アトリビュート(属性;ぞくせい)と呼ぶぜ」</p> <p><a href="https://crieit.now.sh/upload_images/c364a15e0e4977be7e5dd7c6c8da6dfe614f5e3386c3e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c364a15e0e4977be7e5dd7c6c8da6dfe614f5e3386c3e.png?mw=700" alt="20210925wpf508a5.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 アトリビュートは 複数個 付けれるぜ」</p> <h2 id="Step 7-4. テキスト ノード"><a href="#Step+7-4.+%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88+%E3%83%8E%E3%83%BC%E3%83%89">Step 7-4. テキスト ノード</a></h2> <p><a href="https://crieit.now.sh/upload_images/966655927f79cc268d480468cfdd8829614f5ff430193.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/966655927f79cc268d480468cfdd8829614f5ff430193.png?mw=700" alt="20210925wpf508a6.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 開きタグ と 閉じタグの間に テキスト をそのまま書いてもOKだぜ」</p> <h1 id="Step 8. XAML プロパティ要素構文"><a href="#Step+8.+XAML+%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3%E8%A6%81%E7%B4%A0%E6%A7%8B%E6%96%87">Step 8. XAML プロパティ要素構文</a></h1> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 このステップの話しは むずかしいんで、 <strong>読み飛ばして</strong> 構わないぜ。必要になったら読めばいい」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.microsoft.com/ja-jp/windows/uwp/xaml-platform/xaml-syntax-guide">XAML 構文のガイド</a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 XAML(ザムル)は、 XML に追加ルールを設けたものだぜ。簡単に説明するぜ」</p> <p><a href="https://crieit.now.sh/upload_images/45d408c1e148e7f0e6f39d56b7ee6ac0614f614ff1f27.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/45d408c1e148e7f0e6f39d56b7ee6ac0614f614ff1f27.png?mw=700" alt="20210925wpf508a7.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 XML では、 アトリビュートの値に 要素を入れる、みたいなことはできず、<br /> <code>&lt;FullName&gt;なんとか</code> と 三角形の括弧を エスケープ して入れるぐらいだったんだが、 XAML では そこは……」</p> <p><a href="https://crieit.now.sh/upload_images/44d27ee8d4f77d124af0e2b161c2e3af614f626bdade2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/44d27ee8d4f77d124af0e2b161c2e3af614f626bdade2.png?mw=700" alt="20210925wpf508a8.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 こんな書き方で アトリビュートに要素を入れるのを許容しよう、という 運用 をしてるわけだぜ。<br /> なるほど 確かに XML の表現力が 爆上げ してるぜ。歓迎だぜ」</p> <h2 id="Step 8-1. 添付プロパティ"><a href="#Step+8-1.+%E6%B7%BB%E4%BB%98%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3">Step 8-1. 添付プロパティ</a></h2> <p><a href="https://crieit.now.sh/upload_images/3bb0e735088d78545aabe59407301759614f6499bf14a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3bb0e735088d78545aabe59407301759614f6499bf14a.png?mw=700" alt="20210925wpf508a9.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 上図の <code>Game.Series</code> プロパティは、 Character要素のプロパティではなくて、<br /> 親要素の Game のプロパティを使ってる、みたいな 書き方も XMLに追加ルールで運用される。<br /> これも 今は便利さが分からないと思うが、使いようがあって、 XML の表現力が 爆上げ してるぜ。歓迎だぜ」</p> <h1 id="Step 9. ファイル保存しろ"><a href="#Step+9.+%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E4%BF%9D%E5%AD%98%E3%81%97%E3%82%8D">Step 9. ファイル保存しろ</a></h1> <p><a href="https://crieit.now.sh/upload_images/569bf7668bdc100f3ff69c1f5d49ee236149a509208f1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/569bf7668bdc100f3ff69c1f5d49ee236149a509208f1.png?mw=700" alt="20210920wpf203a4.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ここで!<br /> タブに書いてある ファイル名の末尾に注目してくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 えっ? どこ!」</p> <p><a href="https://crieit.now.sh/upload_images/f71f17c06d80db67029d45e2e26d288e6149a5b9d4f2e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f71f17c06d80db67029d45e2e26d288e6149a5b9d4f2e.png?mw=700" alt="20210920wpf203a5.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ここ!」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 なんか 人型が付いてるかなあ?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 <code>*</code> (アスタリスク)だぜ。<br /> ファイル名のうしろに <code>*</code> が付いているファイルは、まだ保存されていません、という印だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/8ecd34b5e6ccb413573ea24ec569a1096149a6f5cd6f4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8ecd34b5e6ccb413573ea24ec569a1096149a6f5cd6f4.png?mw=700" alt="20210920wpf242.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>すべて保存</code> ボタンをクリックして すべてのファイルを保存するか……」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 <code>[Ctrl]</code> キーと <code>[Shift]</code> キーを押しっぱなしにしながら <code>[S]</code> キーを ちょんと 軽く打鍵しろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 これを <code>[Ctrl] + [Shift] + [S]</code> とコマンド表記することがあるぜ。<br /> 3つのキーを 同時押し しようとすると プログラムに <code>s</code> の字を書きこんで できねーっ てなるんで、<br /> <code>[Ctrl]</code>、<code>[Shift]</code>、 <code>[Alt]</code> キーは 他のキーと一緒に押さなければ (基本的に) 何も起こらないようになってるんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 Shiftキーを5連打してみなさいよ。 びっくりして 椅子から転げ落ちるから」</p> <p><a href="https://crieit.now.sh/upload_images/63ecd1152e6afcb48618411f872724a36149a9718523c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/63ecd1152e6afcb48618411f872724a36149a9718523c.png?mw=700" alt="20210920wpf243.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ファイルを1つ保存するボタンをクリックして アクティブなファイルを……、アクティブなファイルって何かって説明するのが難しいよな。<br /> 今 キーボードの <code>a</code> を押したら <code>a</code> の字が打ち込まれるようなテキスト・ファイルとかのことだぜ。<br /> アクティブなファイルだけ 保存されるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 代わりに <code>[Ctrl] + [S]</code> キーでも保存できるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 あっ、 2021年にもなって フロッピー ディスク💾 のアイコンだぜ!」</p> <h2 id="Step 9-1. 実行して確認"><a href="#Step+9-1.+%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E7%A2%BA%E8%AA%8D">Step 9-1. 実行して確認</a></h2> <p><a href="https://crieit.now.sh/upload_images/906910073bdfdb175801c37bac29c0636149aadf0c020.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/906910073bdfdb175801c37bac29c0636149aadf0c020.png?mw=700" alt="20210920wpf203a6.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 デザイナー見ても 見た目は何も変わってないけどな」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 実行してみろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/221aa08893b839c1b876f697ada5e6aa614869063afba.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/221aa08893b839c1b876f697ada5e6aa614869063afba.png?mw=700" alt="20210920wpf204.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 何か変わったかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 タイトルバーが消えたぜ。 あと もともと見えてないが ウィンドウの枠が消えたぜ。<br /> 昔は ウィンドウに 太い枠が有ったんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 残っている部分は <strong>クライアント領域</strong> と呼ぶぜ。 変な名前だが、<br /> Windows ME ぐらいの頃から クライアント領域 って呼んでたから ずっと昔から クライアント領域って名前なんだぜ」</p> <h2 id="Step 9-2. ウィンドウの閉じ方"><a href="#Step+9-2.+%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E9%96%89%E3%81%98%E6%96%B9">Step 9-2. ウィンドウの閉じ方</a></h2> <p><a href="https://crieit.now.sh/upload_images/8f72078af57e51243e6466e019a6da11614872092954b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8f72078af57e51243e6466e019a6da11614872092954b.png?mw=700" alt="20210920wpf209a1.png" /></a><br /> (👆 閉じるボタンが無くなったときの ウィンドウの閉じ方)</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 閉じるボタン 無くなっちゃったんで、タスク バーのアイコンを右クリックして <code>ウィンドウを閉じる</code> を選んでくれだぜ」</p> <h1 id="Step 10. クライアント領域、透明"><a href="#Step+10.+%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E9%A0%98%E5%9F%9F%E3%80%81%E9%80%8F%E6%98%8E">Step 10. クライアント領域、透明</a></h1> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 クライアント領域が 透明になってほしいのよ」</p> <p><a href="https://crieit.now.sh/upload_images/b787a663efcb9c9d5be78566e8c9937a61486c26ed822.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b787a663efcb9c9d5be78566e8c9937a61486c26ed822.png?mw=700" alt="20210920wpf205a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 プロパティ ペーンで <code>AllowsTransparency</code> にチェックを入れろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/28db479ff4664010bdfbfab32a9879a761486d7d0e952.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/28db479ff4664010bdfbfab32a9879a761486d7d0e952.png?mw=700" alt="20210920wpf206a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>ブラシ</code> カテゴリの <code>Background</code> に <code>#00000000</code> を入れろだぜ。 <code>#00xxxxxx</code> で<br /> 不透明度(Opacity)あるいはアルファ値が <code>00</code>、つまり 透明という意味だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/fb08d797fad34b68c8944d1dccdde5e561486eec92177.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fb08d797fad34b68c8944d1dccdde5e561486eec92177.png?mw=700" alt="20210920wpf207.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ほら クライアント領域が透明になったぜ。<br /> なんか 1 pixel ぐらいの黒い枠線が残ってんな……」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 実行してみると 黒い線も見えないぜ。 透明で、どこにあるかも見えないウィンドウだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/30803f5a541e746a18418481f4222bd361487089e82e1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/30803f5a541e746a18418481f4222bd361487089e82e1.png?mw=700" alt="20210920wpf208a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ウィンドウのリサイズ用の境界線かも知らん。 <code>ResizeMode="NoResize"</code> を付けてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 デバッグ実行時に 1 pixel の黒い枠線は見えるぜ。何も変わらないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 じゃあ <code>ResizeMode</code> 関係ないのか」</p> <h1 id="Step 11. 丸とか四角、置け"><a href="#Step+11.+%E4%B8%B8%E3%81%A8%E3%81%8B%E5%9B%9B%E8%A7%92%E3%80%81%E7%BD%AE%E3%81%91">Step 11. 丸とか四角、置け</a></h1> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 グリッド デザインは 初心者には早かったのでは……、まあいいか やったろ」</p> <p><a href="https://crieit.now.sh/upload_images/ddbd13d682235b5f657bf4c0762005ce61487955d2054.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ddbd13d682235b5f657bf4c0762005ce61487955d2054.png?mw=700" alt="20210920wpf212-25per.png" /></a><br /> 📖 <a href="https://crieit.net/drafts/6143293a83161">WPFのGridとかStackPanelとかWrapPanelって何なんだぜ(^~^)?</a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 グリッドって何か、の説明は 上の記事を読んできてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/2d5349005629ca5d929d48021702691861487a4566f4a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2d5349005629ca5d929d48021702691861487a4566f4a.png?mw=700" alt="20210920wpf213a1.png" /></a></p> <p>MainWindow.xaml:</p> <pre><code class="xaml"><Window x:Class="WpfVisualStudio2022Practice.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfVisualStudio2022Practice" mc:Ignorable="d" Title="MainWindow" Width="300" Height="300" WindowStyle="None" AllowsTransparency="True" Background="#00000000"> <!-- くしゃくしゃになった ちり紙 を表現したいですが、 大変なので 正方形2つ、丸1つを描画します --> <Grid> <!-- 2行2列のグリッド --> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <!-- 左上に四角 --> <Rectangle Width="140" Height="140" Fill="WhiteSmoke"/> <!-- 右上に丸 --> <Ellipse Grid.Column="1" Width="140" Height="140" Fill="PapayaWhip"/> <!-- 下段に長方形 --> <Rectangle Grid.Row="1" Grid.ColumnSpan="2" Width="200" Height="140" Fill="AliceBlue"/> </Grid> </Window> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 XAML をコピー貼り付けするだけで 丸とか 四角とか置けるから 試してくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 マウスカーソルで テキストを選んで <code>[Ctrl] + [C]</code>、<br /> 貼り付けたいところに <code>[Ctrl] + [V]</code> で貼り付け」</p> <h1 id="Step 12. テキスト、置け"><a href="#Step+12.+%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%80%81%E7%BD%AE%E3%81%91">Step 12. テキスト、置け</a></h1> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 Web系プログラマーでなければ 知らないから関係ないもしれないが、<br /> HTML だと タグの中にタグを入れて、またその中にタグを入れて…… と<br /> 入れ子が激しいんだが、WPFの グリッド レイアウトだと 入れ子は 少し緩和されるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f9c5f56521248373ff7add510d06e49661487c764b888.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f9c5f56521248373ff7add510d06e49661487c764b888.png?mw=700" alt="20210920wpf214a1.png" /></a></p> <pre><code class="xaml"> <!-- ちらしっぽいメッセージを書きましょう --> <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center" FontSize="20" IsHitTestVisible="False"> ここに<LineBreak/> 紙を貼るな!</TextBlock> <TextBlock Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center" FontSize="20" IsHitTestVisible="False"> へ へ<LineBreak/> の の<LineBreak/> も<LineBreak/> へ</TextBlock> <StackPanel Grid.Row="1" Grid.ColumnSpan="2" Width="200" Height="140" IsHitTestVisible="False"> <TextBlock FontSize="20" Text="6 + 7 = 15" TextDecorations="Strikethrough"/> <TextBlock FontSize="20">6 + 7 = 13<LineBreak/> 13 + 3 = 16</TextBlock> </StackPanel> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 XAML をコピー貼り付けするだけで テキストを置けるから 試してくれだぜ」</p> <h1 id="Step 13. ボタン、置け"><a href="#Step+13.+%E3%83%9C%E3%82%BF%E3%83%B3%E3%80%81%E7%BD%AE%E3%81%91">Step 13. ボタン、置け</a></h1> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 タイトルバーがなくなったんで<br /> ウィンドウをつかむところがなくなって ウィンドウを移動できなくなったし、<br /> ウィンドウの枠がなくなったんで ウィンドウの端っこをつかんで リサイズできなくなったし、<br /> 最小化、最大化、閉じるボタンも無くなったんで、<br /> これら 自力実装しなくちゃ いけないな」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 黙って Windows のルックスをそのまま使って 生産性の向上 に注力したらいいのに」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 最初の この演習は、<br /> ウィンドウに最初から付いているものを 消して、 自力で再実装することだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 苦行わらう」</p> <p><a href="https://crieit.now.sh/upload_images/f79fcb154a97196197428bbd77d70cdb61470b49cb6cb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f79fcb154a97196197428bbd77d70cdb61470b49cb6cb.png?mw=700" alt="20210919wpf123a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 まず、押しても何も起こらないボタン を置こうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/8faa63059baebb30ab8a85cca3d0cb7c61487fef86d2d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8faa63059baebb30ab8a85cca3d0cb7c61487fef86d2d.png?mw=700" alt="20210920wpf215a1.png" /></a></p> <pre><code class="xaml"> <!-- ここにボタンを並べてください --> <Grid Grid.Row="1" Grid.ColumnSpan="2" Width="240" Height="140"> <!-- 2行0列のグリッド --> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <!-- 0行目は空きスペース --> <!-- 1行目 ここにボタンを並べてください --> <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Center"> <Button Width="40" Height="30" Content="最小"/> <!-- 元のサイズに戻すボタンです --> <Button Width="80" Height="30" Content="元サイズ戻す"> </Button> <!-- ウィンドウを最大化するボタンです --> <Button Width="40" Height="30" Content="最大"> </Button> <!-- 閉じるボタンです --> <Button Width="40" Height="30" Content="閉じ"/> </StackPanel> </Grid> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 XAML をコピー貼り付けするだけで ボタンを置けるから 試してくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/add9b881b565dcaf92d41df7ba5696a1614881b8e3902.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/add9b881b565dcaf92d41df7ba5696a1614881b8e3902.png?mw=700" alt="20210920wpf216.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 まだ 張りぼて だな」</p> <h1 id="Step 14. ボタンに機能付けろ"><a href="#Step+14.+%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AB%E6%A9%9F%E8%83%BD%E4%BB%98%E3%81%91%E3%82%8D">Step 14. ボタンに機能付けろ</a></h1> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 最大化したときの見え方とか、テストしたいだろ。<br /> ボタンに機能が入ってないと不便だよな。付けようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/202f202beb003317c4171529fb80656d614882ab824e2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/202f202beb003317c4171529fb80656d614882ab824e2.png?mw=700" alt="20210920wpf217a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 デザイナーで 最小ボタンをクリック、 プロパティ ペーンで 雷マーク をクリックして <code>Click</code> の右横のテキストボックスを<br /> ダブルクリックしろだぜ。 最小ボタンをダブルクリックしても同じだけど」</p> <p><a href="https://crieit.now.sh/upload_images/31efe84eec907ddc2a67dfedf43756b16148837249c0a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31efe84eec907ddc2a67dfedf43756b16148837249c0a.png?mw=700" alt="20210920wpf218a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 コードの画面に飛ぶぜ。 <code>Button_Click</code> とか書かれたコードができているが、これが <strong>スケルトン</strong> だぜ。<br /> スケルトンというのは、 ここにコードを書け っていう 中身が空っぽなものだぜ」</p> <h2 id="Step 14-1. 保存しろ"><a href="#Step+14-1.+%E4%BF%9D%E5%AD%98%E3%81%97%E3%82%8D">Step 14-1. 保存しろ</a></h2> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 思い出せだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/8efd623cafed9eb39a87371d4b4af7b06148846820ed8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8efd623cafed9eb39a87371d4b4af7b06148846820ed8.png?mw=700" alt="20210920wpf219a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ファイル名のうしろに <code>*</code> (アスタリスク)が付いているのは、まだ 保存されていないという印だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/1d34ca44c4547d1b39b7a843ab4a14c1614884c6cebb3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1d34ca44c4547d1b39b7a843ab4a14c1614884c6cebb3.png?mw=700" alt="20210920wpf220.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>すべて保存</code> ボタンをクリックするか、 <code>[Ctrl] + [Shift] + [S]</code> キーをクリックしろだぜ。<br /> 保存されてないファイル全部保存されるぜ。<br /> ファイルを1つずつ保存したいときは <code>[Ctrl] + [S]</code> だぜ。まあ試せ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 特に 2000年 '00年代のデジタルなイラストレーターは <code>保存</code> ボタン押し忘れて 1日の作業が消えるし、<br /> 特に '00年代のデジタルなイラストレーターは ハードディスクのバックアップを取ってないから 生涯の全作品が消えるのよ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 2020年代になると いい感じの企業の会社員は どこかにある データセンターのサーバーに ログインしてから作業するんで<br /> データは サーバー側のディスクに取ってるよな。 会社がバックアップを取ってくれてるぜ。<br /> 目の前にある 貸与のローカルPCにデータ置いてないよな」</p> <h1 id="Step 15. メソッド名 変更"><a href="#Step+15.+%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E5%90%8D+%E5%A4%89%E6%9B%B4">Step 15. メソッド名 変更</a></h1> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 メソッドって何なのか、という説明は置いておいて」</p> <p><a href="https://crieit.now.sh/upload_images/3a6aa75bdc3b9225c76bafb13585e8b66148863578d36.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3a6aa75bdc3b9225c76bafb13585e8b66148863578d36.png?mw=700" alt="20210920wpf221a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>Button_Click</code> のところで右クリックして、 <code>名前の変更</code> を選んでくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d253b80226ce9165d27fbaa585166a25614886d2ec9a7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d253b80226ce9165d27fbaa585166a25614886d2ec9a7.png?mw=700" alt="20210920wpf222a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>MinimizedButton_Click</code> に変えて <code>[Enter]</code> キーを打鍵(だけん;タップ)してくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/c8aea7af157ed9478f69486ff3f46ca66148876d6ac77.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c8aea7af157ed9478f69486ff3f46ca66148876d6ac77.png?mw=700" alt="20210920wpf223a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 すると 名前が変わるのは もちろん だが」</p> <p><a href="https://crieit.now.sh/upload_images/3ef43ae27ddfd4833412ef60428a6b896148881b25ec7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3ef43ae27ddfd4833412ef60428a6b896148881b25ec7.png?mw=700" alt="20210920wpf224a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 参照箇所も併せて変わってくれるので 修正の手間要らずだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d06627f666193c4e293b9c8141b3ecf561488a2605fd2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d06627f666193c4e293b9c8141b3ecf561488a2605fd2.png?mw=700" alt="20210920wpf225a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 以下同様で、 <code>MinimizedButton_Click</code>、 <code>NormalButton_Click</code>、 <code>MaximizedButton_Click</code>、 <code>CloseButton_Click</code> の<br /> 4つのスケルトンを用意してくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/e7e9db7dc7c4a39a5f5967947ef8f6d961470d89201ed.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e7e9db7dc7c4a39a5f5967947ef8f6d961470d89201ed.png?mw=700" alt="20210919wpf124a1.png" /></a></p> <pre><code class="csharp"> private void MinimizedButton_Click(object sender, RoutedEventArgs e) { // ウィンドウを最小化します this.WindowState = WindowState.Minimized; } private void NormalButton_Click(object sender, RoutedEventArgs e) { // 最大化しているウィンドウを元に戻します this.WindowState = WindowState.Normal; } private void MaximizedButton_Click(object sender, RoutedEventArgs e) { // ウィンドウを最大化します this.WindowState = WindowState.Maximized; } private void CloseButton_Click(object sender, RoutedEventArgs e) { // このウィンドウを閉じます this.Close(); } </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 それぞれの機能は 1行呼び出せば済むぜ」</p> <h2 id="Step 15-1. 最大化を試せ"><a href="#Step+15-1.+%E6%9C%80%E5%A4%A7%E5%8C%96%E3%82%92%E8%A9%A6%E3%81%9B">Step 15-1. 最大化を試せ</a></h2> <p><a href="https://crieit.now.sh/upload_images/b8dbe7a4ffc96c223f3b81a61c3bc410614dc85c2b409.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b8dbe7a4ffc96c223f3b81a61c3bc410614dc85c2b409.png?mw=700" alt="20210924wpf445a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 実行してみろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/99ff9b8281db2d28159f195cc252928e614dc96b302c5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/99ff9b8281db2d28159f195cc252928e614dc96b302c5.png?mw=700" alt="20210924wpf446a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 ちり紙の <code>[最大]</code> ボタンをクリックしてみろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/6445ba8d7bb79653a95fe809fdf6c6ad614dc9e4959a4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6445ba8d7bb79653a95fe809fdf6c6ad614dc9e4959a4.png?mw=700" alt="20210924wpf447.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 広がったぜ」</p> <h1 id="Step 16. 可視/不可視、活性/非活性"><a href="#Step+16.+%E5%8F%AF%E8%A6%96%EF%BC%8F%E4%B8%8D%E5%8F%AF%E8%A6%96%E3%80%81%E6%B4%BB%E6%80%A7%EF%BC%8F%E9%9D%9E%E6%B4%BB%E6%80%A7">Step 16. 可視/不可視、活性/非活性</a></h1> <p><a href="https://crieit.now.sh/upload_images/22b98144f2d6bca5ec89b05feaae97ef6148905fa3394.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/22b98144f2d6bca5ec89b05feaae97ef6148905fa3394.png?mw=700" alt="20210920wpf228a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 すでに 最大化 してるんだったら <code>[最大化]</code> ボタンなんか見えない方がいいし……」</p> <p><a href="https://crieit.now.sh/upload_images/3e80c47569ecb6703d3f8c36ab29a272614890d4b17a1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3e80c47569ecb6703d3f8c36ab29a272614890d4b17a1.png?mw=700" alt="20210920wpf229a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 すでに 元のサイズに戻っているのなら、元のサイズに戻すボタンなんか見えない方がいいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 プログラマーが意識したいのは<br /> <strong>機能があるものは、その機能を持っているように見えること、</strong><br /> <strong>機能をもっていないものは、その機能をもっていないように見えること、</strong><br /> <strong>機能を持っているように見えるものは、その機能を持っていること、</strong><br /> <strong>機能を持っていないように見えるものは、その機能を持っていないこと</strong> だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 逆も真か」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 対偶だから 最後の2行は要らなくない?」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 通常のサイズのとき 元のサイズに戻すボタンを 見えなくして、<br /> 最大化のサイズのときは 最大化ボタンを 見えなくしてくれだぜ」</p> <h1 id="Step 17. テンプレート(良くない例)"><a href="#Step+17.+%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%28%E8%89%AF%E3%81%8F%E3%81%AA%E3%81%84%E4%BE%8B%29">Step 17. テンプレート(良くない例)</a></h1> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 じゃあ まず 良くない書き方の例から説明するぜ。<br /> そのあとで 良い書き方の例を説明する」</p> <p><a href="https://crieit.now.sh/upload_images/0b91dc659b83ae871bc1e2c9b62c653d614892469e8b9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0b91dc659b83ae871bc1e2c9b62c653d614892469e8b9.png?mw=700" alt="20210920wpf230a1.png" /></a></p> <pre><code class="xaml"> <!-- 元のサイズに戻すボタンです --> <Button Width="80" Height="30" Content="元サイズ戻す" Click="NormalButton_Click"> </Button> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 今、ボタンは シンプルに書けてるんだが、これを 複雑に書いていってみるぜ。お見せしよう」</p> <p><a href="https://crieit.now.sh/upload_images/3c9eb78602a31177518311cf900695a7614893edb0f64.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3c9eb78602a31177518311cf900695a7614893edb0f64.png?mw=700" alt="20210920wpf231.png" /></a></p> <pre><code class="xaml"> <!-- 元のサイズに戻すボタンです --> <Button Width="80" Height="30" Content="元サイズ戻す" Click="NormalButton_Click"> <Button.Template> <ControlTemplate TargetType="Button"> </ControlTemplate> </Button.Template> </Button> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 Button が Template というプロパティを持っているんで、そこに ControlTemplate をセットするには、<br /> 上記みたいな書き方をするのが一番簡単なんだが、この書き方は XAML が読みにくくなるんだぜ。続けるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/48b2f7d8beec272a786d3867726938d86149c2b28688a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/48b2f7d8beec272a786d3867726938d86149c2b28688a.png?mw=700" alt="20210921wpf249a1.png" /></a></p> <pre><code class="xaml"> <!-- 元のサイズに戻すボタンです --> <Button Width="80" Height="30" Content="元サイズ戻す" Click="NormalButton_Click"> <Button.Template> <ControlTemplate TargetType="Button"> <!-- ニュートラル状態でのボタンのルックスです --> <Grid> <Rectangle Width="80" Height="30" Stroke="#FF000000" StrokeThickness="0.5" Fill="#FFDDDDDD"/> <Label Content="元サイズ戻す"/> </Grid> <ControlTemplate.Triggers> <!-- ウィンドウのサイズがニュートラルな状態のとき、[元のサイズに戻す]ボタンの場所を無くします --> <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window<span>}</span><span>}</span>" Value="Normal"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </ControlTemplate.Triggers> </ControlTemplate> </Button.Template> </Button> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ニュートラルな状態での <code>元のサイズに戻す</code> ボタンと、<br /> ウィンドウのサイズが ニュートラル なときの <code>元のサイズに戻す</code> ボタンの場所を無くす設定だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 すっきりしてた XAML が、とたんに ごちゃごちゃ し出したわねぇ」</p> <p><a href="https://crieit.now.sh/upload_images/41e4cb7e11192d75cb42dfb76ae02c4a614895d50248e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/41e4cb7e11192d75cb42dfb76ae02c4a614895d50248e.png?mw=700" alt="20210920wpf233a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 確かに <code>普通のサイズに戻す</code> ボタンは 場所が無くなってるぜ」</p> <h1 id="Step 18. テンプレート(良い例)"><a href="#Step+18.+%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%28%E8%89%AF%E3%81%84%E4%BE%8B%29">Step 18. テンプレート(良い例)</a></h1> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 そこで リソース ディクショナリー を使うやり方を、初心者こそ 早く覚えようぜ」</p> <p><a href="https://crieit.now.sh/upload_images/2c4021c015a24ae97c5c68ca4739bc0861489707988a9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2c4021c015a24ae97c5c68ca4739bc0861489707988a9.png?mw=700" alt="20210920wpf234a1.png" /></a></p> <p>MainWindow.xaml:</p> <pre><code class="xaml"> <!-- このウィンドウでだけ使うリソースを定義します --> <Window.Resources> </Window.Resources> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 Window要素の冒頭らへんに <code><Window.Resources></code> 子要素を置こうぜ」</p> <p><a href="https://crieit.now.sh/upload_images/fe4ebdba5e87eac5ae0ec7e91014b4166149b9506154c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fe4ebdba5e87eac5ae0ec7e91014b4166149b9506154c.png?mw=700" alt="20210921wpf245.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 そして さっきの <code><ControlTemplate></code> 要素を カット&ペースト」</p> <p><a href="https://crieit.now.sh/upload_images/f6c96c6ac16e4162192f465d8457fc3d6149b9f34975b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f6c96c6ac16e4162192f465d8457fc3d6149b9f34975b.png?mw=700" alt="20210921wpf246a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 上図の位置で <code>k</code> を入力して 候補から <code>Key (x)</code> を選択」</p> <p><a href="https://crieit.now.sh/upload_images/76e5de513de67b969519d06cf5ef30326149ba49dd776.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/76e5de513de67b969519d06cf5ef30326149ba49dd776.png?mw=700" alt="20210921wpf247a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>"</code> (ダブルクォーテーション )の閉じるとこまで 自動で補完してくれるから、その中を書けばいいんだが、<br /> ここに何を書くかというと まあ <strong>先頭が小文字英字</strong> の例が多いぐらいで <strong>任意</strong>(にんい)の名前だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 <strong>にんい</strong> って何だぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 勝手にしろ、ぐらいの意味だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/0878f2816d41a60a1b2936b18f61b44c6149c11ca8c19.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0878f2816d41a60a1b2936b18f61b44c6149c11ca8c19.png?mw=700" alt="20210921wpf248a1.png" /></a></p> <pre><code class="xaml"> <!-- このウィンドウでだけ使うリソースを定義します --> <Window.Resources> <ControlTemplate x:Key="normalButton" TargetType="Button"> <!-- ニュートラル状態でのボタンのルックスです --> <Grid> <Rectangle Width="80" Height="30" Stroke="#FF000000" StrokeThickness="0.5" Fill="#FFDDDDDD"/> <Label Content="元サイズ戻す"/> </Grid> <ControlTemplate.Triggers> <!-- ウィンドウのサイズがニュートラルな状態のとき、[元のサイズに戻す]ボタンの場所を無くします --> <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window<span>}</span><span>}</span>" Value="Normal"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </ControlTemplate.Triggers> </ControlTemplate> </Window.Resources> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 キーの値は <code>normalButton</code> とかにしとこうぜ」</p> <p><a href="https://crieit.now.sh/upload_images/9fb9817d4505498d9d41eadc74c1100c6148992be4aa9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9fb9817d4505498d9d41eadc74c1100c6148992be4aa9.png?mw=700" alt="20210920wpf238a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 切り取った方を どうするかというと」</p> <p><a href="https://crieit.now.sh/upload_images/40cfaa90634f2deddb5c254fb1475331614899abc66a0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/40cfaa90634f2deddb5c254fb1475331614899abc66a0.png?mw=700" alt="20210920wpf239a1.png" /></a></p> <pre><code class="plain">Template="{StaticResource }" </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 上記みたいな感じで キータイピングしていると 入力候補が出てくるんで、 <code>onrmalButton</code> を選べだぜ。<br /> 入力候補出ないな? と思ったら <code>[Ctrl] + [Space]</code> キーを打鍵(だけん;タップ)しろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/70d0e407c76809856d2dbdc0f72ce7d161489a695cb19.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/70d0e407c76809856d2dbdc0f72ce7d161489a695cb19.png?mw=700" alt="20210920wpf240a1.png" /></a></p> <pre><code class="xaml"> <!-- 元のサイズに戻すボタンです --> <Button Width="80" Height="30" Content="元サイズ戻す" Click="NormalButton_Click" Template="{StaticResource normalButton}"/> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 これで さっきと同じ働きもするし、 XAMLも読みやすい 良い書き方だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 コーディングの初心者のときに コーディング スキルの高い技を持っていたいよな」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 低いコーディング スキルと、ものすごい熱意で 重量級のコード書くのも 誰もが通るところだから それはそれで構わないのよ。<br /> それを引き継ぐことになって メンテナンスするのも 構わないのよ。<br /> 飛伝のタレで メンテナンスしてはいけなくなって 継承を続けることが伝統になるのが 嫌なだけで」</p> <h2 id="Step 18-1. 最大化ボタンも同様"><a href="#Step+18-1.+%E6%9C%80%E5%A4%A7%E5%8C%96%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%82%E5%90%8C%E6%A7%98">Step 18-1. 最大化ボタンも同様</a></h2> <pre><code class="xaml"> <ControlTemplate x:Key="maximizedButton" TargetType="Button"> <!-- ニュートラル状態でのボタンのルックスです --> <Grid> <Rectangle Width="40" Height="30" Stroke="#FF000000" StrokeThickness="0.5" Fill="#FFDDDDDD"/> <Label Content="最大"/> </Grid> <ControlTemplate.Triggers> <!-- ウィンドウのサイズが最大の状態のとき、[元のサイズに戻す]ボタンの場所を無くします --> <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window<span>}</span><span>}</span>" Value="Maximized"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </ControlTemplate.Triggers> </ControlTemplate> </code></pre> <pre><code class="xaml"> <!-- ウィンドウを最大化するボタンです --> <Button Width="40" Height="30" Content="最大" Click="MaximizedButton_Click" Template="{StaticResource maximizedButton}"/> </code></pre> <h1 id="Step 19. テンプレートバインディング"><a href="#Step+19.+%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%83%90%E3%82%A4%E3%83%B3%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0">Step 19. テンプレートバインディング</a></h1> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 しかし お父ん」</p> <p><a href="https://crieit.now.sh/upload_images/78b05b2ef801b8d767195fc2b7a3b80c6149c776255ee.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/78b05b2ef801b8d767195fc2b7a3b80c6149c776255ee.png?mw=700" alt="20210921wpf250a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 <code>Button</code> タグには <code>Widh="80"</code> とか <code>Content="元サイズ戻す"</code> といったアトリビュートが残っているな?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 残っているぜ」</p> <p><a href="https://crieit.now.sh/upload_images/3ac233e375b113aee5d31871e0fb74396149c861a3df6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3ac233e375b113aee5d31871e0fb74396149c861a3df6.png?mw=700" alt="20210921wpf251a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 <code>ControlTemplate</code> タグの方にも、 <code>Widh="80"</code> とか <code>Content="元サイズ戻す"</code> とか、おんなじ値のアトリビュートがあるな?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 あるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/861c9a16dc4685a984b4cf4212f65ffd6149ca25ac562.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/861c9a16dc4685a984b4cf4212f65ffd6149ca25ac562.png?mw=700" alt="20210921wpf253.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 <code>Button</code> の <code>Width="80"</code> と、 <code>ControlTemplate</code> の <code>Widh="80"</code> だったら、どっちを使ってるんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 <code>Button</code> の方は無視して <code>ControlTemplate</code> の方を使ってるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 <code>ControlTemplate</code> が ぶら下がったら、元のタグの方のレイアウトは すっかり忘れてしまって<br /> ごっそり <code>ControlTemplate</code>の方が使われると思えだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 じゃあ <code>Button</code> の方の <code>Width="80"</code> とかは使ってないんだったら 消したらいいんじゃないか?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 どっちかと言うと…… <code>ControlTemplate</code> の方の <code>Width="80"</code> を消したいんだぜ。<br /> <code>Button</code> に <code>Width="80"</code> と指定したら、 <code>ControlTemplate</code> の方の <code>Width</code> も 80 になってほしい」</p> <p><a href="https://crieit.now.sh/upload_images/0e549ee6a70e2450e775a76e49b05d946149ce1a62cc7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0e549ee6a70e2450e775a76e49b05d946149ce1a62cc7.png?mw=700" alt="20210921wpf254a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>ControlTemplate</code> って名前をしているが、こういうの <strong>テンプレート</strong> (Template) という概念なんだぜ。<br /> テンプレートって何かというと <strong>穴あき定規</strong> なんだが」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 穴定規がどうしたっていうの」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 おんなじ物 何回も使う、っていうことだぜ。<br /> そのとき 一部分だけ ちょっと変えて使いたい なんてことも よくあるわけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/c7feae314cd4665f975c7f94cb188d176149d0ad4c392.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c7feae314cd4665f975c7f94cb188d176149d0ad4c392.png?mw=700" alt="20210921wpf255a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>Width="</code> の始まりのダブルクォーテーションのすぐ右から <code>{B</code> と打鍵し始めろだぜ。<br /> <strong>インテリセンス</strong>(IntelliSense)が出てくる……、この入力候補が出てくるやつのこと インテリセンスとか呼んでるやついるのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 候補だよな。あるいは サジェスチョン」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 Visual Studio は インテリセンス が出てくるのが自慢なんで、 Visual Studio を使うんだったら積極的にインテリセンスを使えだぜ。<br /> なんなら <code>[Ctrl] + [Space]</code> で こっちから インテリセンスを呼び出せるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 わらう」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 <code>Bind</code> とか打鍵すれば そこで書ける バインドの種類が一覧されるんで、 <code>TemplateBinding</code> を選べだぜ。<br /> テンプレートで使うバインディングだから <code>TemplateBinding</code> なんだろ、簡単だろ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 何なんだぜ それ」</p> <p><a href="https://crieit.now.sh/upload_images/094b1507670df8e587200de4137460ba6149d4701ddb4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/094b1507670df8e587200de4137460ba6149d4701ddb4.png?mw=700" alt="20210921wpf256a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 そして 半角スペース1個空ければ また インテリセンスが出てくるぜ。<br /> これは テンプレートのタグに <code>TargetType="Button"</code> って書いてるから Button と知ってて出てくるんだけど」</p> <p><a href="https://crieit.now.sh/upload_images/c3471bc7e2da45f53026fe3c8a6a97a46149d647e84df.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c3471bc7e2da45f53026fe3c8a6a97a46149d647e84df.png?mw=700" alt="20210921wpf257a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 さらに <code>W</code> って打てだぜ。 <code>Width</code> (ウィトゥス;横幅)が出てくるぜ。<br /> これ、 Button の <code>Width</code> だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/2fa33eb4cc868294a797df7e2b9ab8936149d71e14620.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2fa33eb4cc868294a797df7e2b9ab8936149d71e14620.png?mw=700" alt="20210921wpf258a1.png" /></a></p> <pre><code class="xaml"> <Rectangle Width="{TemplateBinding Width}" Height="30" Stroke="#FF000000" StrokeThickness="0.5" Fill="#FFDDDDDD"/> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 これで <code>ControlTemplate</code> から <code>Width="80"</code> が消えて、 <code>Button</code> の方の <code>Width="80"</code> になったんだぜ。<br /> これが バインディング」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 他のところも バインディング してしまおうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/130e6bd630942c2149e76d27e14a1c7c6149daeb343fc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/130e6bd630942c2149e76d27e14a1c7c6149daeb343fc.png?mw=700" alt="20210921wpf259.png" /></a></p> <pre><code class="xaml"> <!-- このウィンドウでだけ使うリソースを定義します --> <Window.Resources> <!-- ウィンドウを元のサイズに戻すボタンです --> <ControlTemplate x:Key="normalButton" TargetType="Button"> <!-- ニュートラル状態でのボタンのルックスです --> <Grid> <Rectangle Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Stroke="{TemplateBinding Foreground}" StrokeThickness="0.5" Fill="{TemplateBinding Background}"/> <Label Content="{TemplateBinding Content}"/> </Grid> <ControlTemplate.Triggers> <!-- ウィンドウのサイズがニュートラルな状態のとき、[元のサイズに戻す]ボタンの場所を無くします --> <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window<span>}</span><span>}</span>" Value="Normal"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </ControlTemplate.Triggers> </ControlTemplate> <!-- ウィンドウを最大化するボタンです --> <ControlTemplate x:Key="maximizedButton" TargetType="Button"> <!-- ニュートラル状態でのボタンのルックスです --> <Grid> <Rectangle Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Stroke="{TemplateBinding Foreground}" StrokeThickness="0.5" Fill="{TemplateBinding Background}"/> <Label Content="{TemplateBinding Content}"/> </Grid> <ControlTemplate.Triggers> <!-- ウィンドウのサイズが最大の状態のとき、[元のサイズに戻す]ボタンの場所を無くします --> <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window<span>}</span><span>}</span>" Value="Maximized"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </ControlTemplate.Triggers> </ControlTemplate> </Window.Resources> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 バインドしまくって こうかな」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 Button は BorderThickness 持ってるかと思ったんだが インテリセンスに出てこなかった。さっぱり分かんね」</p> <h1 id="Step 20. DataTrigger外に出す"><a href="#Step+20.+DataTrigger%E5%A4%96%E3%81%AB%E5%87%BA%E3%81%99">Step 20. DataTrigger外に出す</a></h1> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 ここは むずかしいので、 読み飛ばしてもいいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 あれっ、お父ん」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 <code>[元のサイズに戻す]</code> ボタンと、 <code>[最大化]</code> ボタンの違いって、何だぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/f8c8c0b880921b99806180fc0142780e614f37879bf00.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f8c8c0b880921b99806180fc0142780e614f37879bf00.png?mw=700" alt="20210925wpf497a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[元のサイズに戻す]</code> ボタンは ウィンドウサイズが <code>normal</code> のときは 場所から消えていて、<br /> <code>[最大化]</code> ボタンは ウィンドウサイズが <code>maximized</code> のときに 場所から消えてることだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 そうか、違いがあるのかだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/30330179/wpf-button-data-trigger">Wpf button data trigger</a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 しかし 違うところが 少しだけだったら そこだけ外にだしたいよな。<br /> <code><Button.Style></code>、 <code><Style></code>、 <code><Style.Triggers></code> の合わせ技で 外に出せるようだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 なんか めんどくさいことに 足を踏み込んでしまったかだぜ」</p> <pre><code class="xaml"> <!-- ウィンドウを [元のサイズに戻す]ボタン --> <Button Width="80" Height="30" Content="元サイズ戻す" Click="NormalButton_Click" Template="{StaticResource normalButton}"> <Button.Style> <Style TargetType="Button"> <Style.Triggers> <!-- ここに DataTrigger が書けます --> </Style.Triggers> </Style> </Button.Style> </Button> <!-- ウィンドウの [最大化]ボタン --> <Button Width="40" Height="30" Content="最大" Click="MaximizedButton_Click" Template="{StaticResource maximizedButton}"> <Button.Style> <Style TargetType="Button"> <Style.Triggers> <!-- ここに DataTrigger が書けます --> </Style.Triggers> </Style> </Button.Style> </Button> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 Button 要素に Button.Style 要素をぶら下げられるので」</p> <pre><code class="xaml"> <!-- ウィンドウのサイズがニュートラルな状態のとき、[元のサイズに戻す]ボタンの場所を無くします --> <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window<span>}</span><span>}</span>" Value="Normal"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </code></pre> <pre><code class="xaml"> <!-- ウィンドウのサイズが最大の状態のとき、[元のサイズに戻す]ボタンの場所を無くします --> <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window<span>}</span><span>}</span>" Value="Maximized"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 DataTrigger を <code>[Ctrl] + [X]</code> キーで切り取って……」</p> <p><a href="https://crieit.now.sh/upload_images/59b52bbbc2c4003fc4ec4f30af9079c7614f3fe218799.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/59b52bbbc2c4003fc4ec4f30af9079c7614f3fe218799.png?mw=700" alt="20210925wpf498a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 貼り付ければ……」</p> <p><a href="https://crieit.now.sh/upload_images/ce6bc90a64f521523a02aabe08ff85a4614f415760e2f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ce6bc90a64f521523a02aabe08ff85a4614f415760e2f.png?mw=700" alt="20210925wpf499a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 キー名だけが違う 同じものなんで……」</p> <p><a href="https://crieit.now.sh/upload_images/cb42212d1e2d4b414f6ba455284edd42614f42496007e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cb42212d1e2d4b414f6ba455284edd42614f42496007e.png?mw=700" alt="20210925wpf500a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>normalButton</code> だけ残して <code>maximizedButton</code> の方をバッサリ消して……」</p> <p><a href="https://crieit.now.sh/upload_images/95135da39916a810f52874ca7761b28d614f433315ee3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/95135da39916a810f52874ca7761b28d614f433315ee3.png?mw=700" alt="20210925wpf501a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 Buttonタグの方の <code>maximizedButton</code> と書いているところを <code>normalButton</code> に書き直せば OK だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 なんか XAML の グリッド レイアウトを書くところが ぐちゃっと しちゃったわねぇ」</p> <h1 id="Step 21. 折りたたみボタン"><a href="#Step+21.+%E6%8A%98%E3%82%8A%E3%81%9F%E3%81%9F%E3%81%BF%E3%83%9C%E3%82%BF%E3%83%B3">Step 21. 折りたたみボタン</a></h1> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 その ぐちゃっと している <code><Style></code> タグを、 <code><Window.Resources></code> タグの中へ 持っていけないのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 やってみるか……。 WPF、 なんか こういうところ ベスト プラクティスは どうすればいいんだろうな」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 その前に」</p> <p><a href="https://crieit.now.sh/upload_images/7ec75825297f49c58d52e59168106c61614f48443625f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7ec75825297f49c58d52e59168106c61614f48443625f.png?mw=700" alt="20210925wpf502a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 コードの 左横にある マイナス印のボタン、 <code>折りたたみボタン</code> って言うんだが 使うぜ」</p> <p><a href="https://crieit.now.sh/upload_images/a9e27e8ef62b1be7dea89b6886124f6d614f48f3bdda4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a9e27e8ef62b1be7dea89b6886124f6d614f48f3bdda4.png?mw=700" alt="20210925wpf503a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 折りたためるな」</p> <h1 id="Step 22. Styleをリソースへ"><a href="#Step+22.+Style%E3%82%92%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%B8">Step 22. Styleをリソースへ</a></h1> <p><a href="https://crieit.now.sh/upload_images/6736c7c48eaec9f90754e495467427f2614f49f641227.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6736c7c48eaec9f90754e495467427f2614f49f641227.png?mw=700" alt="20210925wpf504a1.png" /></a></p> <pre><code class="xaml"> <!-- [元のサイズに戻す]ボタンのスタイル --> <Style x:Key="normalWindowSizeButton" TargetType="Button"> <Style.Triggers> <!-- ウィンドウのサイズがニュートラルな状態のとき、[元のサイズに戻す]ボタンの場所を無くします --> <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window<span>}</span><span>}</span>" Value="Normal"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </Style.Triggers> </Style> <!-- [最大化]ボタンのスタイル --> <Style x:Key="maximizedButton" TargetType="Button"> <Style.Triggers> <!-- ウィンドウのサイズが最大の状態のとき、[最大化]ボタンの場所を無くします --> <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window<span>}</span><span>}</span>" Value="Maximized"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </Style.Triggers> </Style> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code><Button></code> タグから <code><Style></code> タグを切り取ったものを <code>[Ctrl] + [V]</code> で貼り付けて、<br /> <code>[元のサイズに戻す]</code> ボタンのスタイルの方には キー名 <code>x:Key="normalWindowSizeButton"</code> を付けて、<br /> <code>[最大化]</code> ボタンのスタイルの方には キー名 <code>x:Key="maximizedButton"</code> を付けるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/92b0c8e8bec0b0b6d9b0f0b831f4d709614f4b9c1e007.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/92b0c8e8bec0b0b6d9b0f0b831f4d709614f4b9c1e007.png?mw=700" alt="20210925wpf505a1.png" /></a></p> <pre><code class="xaml"> <!-- ウィンドウを [元のサイズに戻す]ボタン --> <Button Width="80" Height="30" Content="元サイズ戻す" Click="NormalButton_Click" Template="{StaticResource normalButton}" Style="{StaticResource normalWindowSizeButton}"/> <!-- ウィンドウの [最大化]ボタン --> <Button Width="40" Height="30" Content="最大" Click="MaximizedButton_Click" Template="{StaticResource normalButton}" Style="{StaticResource maximizedButton}"/> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code><Button></code> から <code><Style></code> タグを切り取って 持っていっちゃったんで、<br /> 代わりに <code>Style=""</code> というアトリビュートを使って キー名 を指定しておけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 WPFは、こんな めんどくさい 切った貼った をしなくちゃならないのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 自分がやらなくても、他人はやってるから、こういうコードも 読めなくちゃいけないのよ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 そうだぜ」</p> <h1 id="Step 23. マウス オーバー"><a href="#Step+23.+%E3%83%9E%E3%82%A6%E3%82%B9+%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC">Step 23. マウス オーバー</a></h1> <p><a href="https://crieit.now.sh/upload_images/f563f7b0104e6e04d8fd41fc2689907f614ef7d03c072.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f563f7b0104e6e04d8fd41fc2689907f614ef7d03c072.png?mw=700" alt="20210925wpf480.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 ボタンに マウスカーソルが重なっても ボタンに色がついたり、何か見た目に変化が無いの、<br /> 押せるのかどうか 分かりづらいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>ControlTemplate</code> を使ったから、もともと ボタンに付いていた機能が消えたんだな。<br /> 自力実装する必要があるぜ。説明しよう」</p> <p><a href="https://crieit.now.sh/upload_images/57760964a2a5c12ed50fb65cabd330fe614f064ead80b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/57760964a2a5c12ed50fb65cabd330fe614f064ead80b.png?mw=700" alt="20210925wpf481a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[元のサイズに戻す]</code> ボタンのルックスを作っている <code>Rectangle</code> (四角形)に <code>Name="normalButtonRect"</code> とでも <strong>名前</strong> を付けろだぜ。<br /> 同様に <code>[最大化]</code> ボタンの <code>Rectangle</code> にも <code>Name="maximizedButtonRect"</code> とでも名前を付けろだぜ」</p> <pre><code class="xaml"> <!-- "normalButtonRect" という名前の矩形を、この行より以前に作っておいてください。 マウスが重なった時に枠線を青くします --> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="normalButtonRect" Property="Stroke" Value="Blue"/> <Setter TargetName="normalButtonRect" Property="Fill" Value="LightBlue"/> </Trigger> </code></pre> <pre><code class="xaml"> <!-- "maximizedButtonRect" という名前の矩形を、この行より以前に作っておいてください。 マウスが重なった時に枠線を青くします --> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="maximizedButtonRect" Property="Stroke" Value="Blue"/> <Setter TargetName="maximizedButtonRect" Property="Fill" Value="LightBlue"/> </Trigger> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>Setter</code> タグは、名前の付いているエレメントのプロパティを変えれるんで、それを使うぜ。<br /> <code><Trigger Property="IsMouseOver" Value="True"></code> は、 もしも マウスが重なっていたら、ぐらいの意味だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/9b3f4ce1700015cb8800031d5a93df84614f09aeacf9f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9b3f4ce1700015cb8800031d5a93df84614f09aeacf9f.png?mw=700" alt="20210925wpf482a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/9ff88b1f7503ea27ccd32db898870a9c614f0ab5dbda8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9ff88b1f7503ea27ccd32db898870a9c614f0ab5dbda8.png?mw=700" alt="20210925wpf483a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 マウスカーソルが重なると ボタンに色が付く仕掛けを 自作 したわけだぜ」</p> <p>参考記事:📖 <a target="_blank" rel="nofollow noopener" href="https://zenn.dev/tera1707/articles/6a728c5e099b44">[WPF] Templateで見た目を変えつつStyleとTriggerでMouseOver等のときの色を変える</a></p> <h1 id="Step 24. トリガーを探せ"><a href="#Step+24.+%E3%83%88%E3%83%AA%E3%82%AC%E3%83%BC%E3%82%92%E6%8E%A2%E3%81%9B">Step 24. トリガーを探せ</a></h1> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 <code>IsMouseOver</code> 以外には、どんなトリガーがあるんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 それを調べる方法が 分からないんだぜ。自分流のやり方はあるけど カンペキな答えになってない。説明しよう」</p> <p><a href="https://crieit.now.sh/upload_images/825493d48c1805109e2771a68e27541b614f168d7c1fc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/825493d48c1805109e2771a68e27541b614f168d7c1fc.png?mw=700" alt="20210925wpf484a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>Rectangle</code> というタグの名前のところを右クリックして、 <code>[定義へ移動(G)]</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/6ebfad3c498c06726a39b4215ea74995614f179c46b61.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6ebfad3c498c06726a39b4215ea74995614f179c46b61.png?mw=700" alt="20210925wpf485a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>Rectangle</code> のソースの 概要だけ見えるんだが、さらに <code>Sharp</code> を右クリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f992b42ee660e959dc67e48a219d8652614f1872c5314.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f992b42ee660e959dc67e48a219d8652614f1872c5314.png?mw=700" alt="20210925wpf486a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 また <code>[定義へ移動(G)]</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/fce6142fb86731b5896dd4f473841145614f197e7f8bb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fce6142fb86731b5896dd4f473841145614f197e7f8bb.png?mw=700" alt="20210925wpf487a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>Sharp</code> のソースの 概要だけ見えるんだが、さらに <code>FrameworkElement</code> を右クリックして <code>[定義へ移動(G)]</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/926dfa952c609dd6c05dc0faeadea968614f1d696b1fe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/926dfa952c609dd6c05dc0faeadea968614f1d696b1fe.png?mw=700" alt="20210925wpf488a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>FrameworkElement</code> のソースの 概要だけ見えるんだが、さらに <code>IInputElement</code> を右クリックして <code>[定義へ移動(G)]</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/8acc2641b7a1a1ff3272cbc2bf0e2a84614f1e024b4ca.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8acc2641b7a1a1ff3272cbc2bf0e2a84614f1e024b4ca.png?mw=700" alt="20210925wpf489a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>IInputElement</code> のソースの 概要だけ見えるんだが、ここに <code>IsMouseOver</code> の名前が見えるな」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 あるけど、これが トリガーと紐づく とは思えないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 多分、WPF では <code>DependencyProperty</code> という仕組みが裏で働いていて、これが働いているから、 <code>Property="名前"</code> の形に書けると思うんだぜ。<br /> そこから わたしは慣習に従って <code>IsMouseOverProperty</code> といった名前のプロパティを探すぜ」</p> <p><a href="https://crieit.now.sh/upload_images/47f2eb41bc73a044e267d8927b7445ea614f220a78a05.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/47f2eb41bc73a044e267d8927b7445ea614f220a78a05.png?mw=700" alt="20210925wpf490a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 こんどは <code>FrameworkElement</code> の <code>UIElement</code> を右クリックして <code>[定義へ移動(G)]</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/ef31806ccfa2119b6221f817a805cfa1614f23f8b45b0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ef31806ccfa2119b6221f817a805cfa1614f23f8b45b0.png?mw=700" alt="20210925wpf492a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>UIElement</code> のソースの 概要だけ見えるんだが……」</p> <p><a href="https://crieit.now.sh/upload_images/255d75dda3f313ca644e4d7eb601bce6614f2488797e9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/255d75dda3f313ca644e4d7eb601bce6614f2488797e9.png?mw=700" alt="20210925wpf493.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 有ったな」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 ドキュメントの形にしてほしいぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.microsoft.com/en-us/dotnet/api/system.windows.uielement?view=net-5.0">UIElement Class</a></p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 👆 ドキュメントはあるんだけど、欲しいのと違うのよねえ」</p> <h1 id="Step 25. マウス プレス"><a href="#Step+25.+%E3%83%9E%E3%82%A6%E3%82%B9+%E3%83%97%E3%83%AC%E3%82%B9">Step 25. マウス プレス</a></h1> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 ボタンを押したときは、ボタンが押したような見た目になってほしいよな」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 マウスボタンが重なったときみたいに、 Rectangleタグに名前を付けて、 マウスボタンを押したというトリガーの中に<br /> Setterタグを置いて Strokeプロパティや、Fillプロパティの色を塗ったらいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 その、 <strong>マウスのボタンを押したトリガー</strong> の名前が分からん。 <code>[Ctrl] + [Space]</code> を打鍵しても インテリセンスが出てきてくれないぜ? 」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 Style のトリガーに <code>マウスのボタンを押した</code> とか無いのかも知らん。」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/2208447/wpf-change-background-color-of-border-on-left-mouse-button-down">WPF: Change background color of border on left mouse button down</a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 Button には IsPressed があるらしいんだが、 Rectangle には無いんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 じゃあ Button の IsPressed を使えばいいのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/de674919ca1f647af34db32649aeeb97614f4e661d161.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/de674919ca1f647af34db32649aeeb97614f4e661d161.png?mw=700" alt="20210925wpf506a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/ada5da2a37c1bd5a49a4ec19a7c957d8614f2db094556.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ada5da2a37c1bd5a49a4ec19a7c957d8614f2db094556.png?mw=700" alt="20210925wpf494a1.png" /></a></p> <pre><code class="xaml"> <!-- マウス ボタンを押下したときに、背景色を暗くします --> <Trigger Property="IsPressed" Value="True"> <Setter TargetName="normalButtonRect" Property="Stroke" Value="White"/> <Setter TargetName="normalButtonRect" Property="Fill" Value="DarkGray"/> </Trigger> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 こう書けば いけたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5df4441ec6e3862f92d1ed0825a866b2614f2e40d92c0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5df4441ec6e3862f92d1ed0825a866b2614f2e40d92c0.png?mw=700" alt="20210925wpf495a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/0c19886cffd96b17678d00c8b6a5fc2e614f2eb87c567.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0c19886cffd96b17678d00c8b6a5fc2e614f2eb87c567.png?mw=700" alt="20210925wpf496a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 マウス ボタンを押下すると 四角形の背景色が 灰色になることで、 ボタンを押したという感じを 視覚的に表現だぜ」</p> <h2 id="Step 26. 他のボタン スタイル揃え"><a href="#Step+26.+%E4%BB%96%E3%81%AE%E3%83%9C%E3%82%BF%E3%83%B3+%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E6%8F%83%E3%81%88">Step 26. 他のボタン スタイル揃え</a></h2> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 <code>[最小化]</code> ボタンと、 <code>[閉じる]</code> ボタンは 押下すると 水色っぽい色になるのに、<br /> <code>[元のサイズに戻す]</code> ボタンと、 <code>[最大化]</code> ボタンが ボタンを押下すると 灰色になってて イケてないわよ?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 1か所自作すると 他の自作していないところ 全部気になるしな」</p> <p><a href="https://crieit.now.sh/upload_images/fe096b4e91cd8bedffdf9d3248a9e880614f4fa248690.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fe096b4e91cd8bedffdf9d3248a9e880614f4fa248690.png?mw=700" alt="20210925wpf507a1.png" /></a></p> <pre><code class="xaml"> <!-- ウィンドウの [最小化]ボタン --> <Button Width="40" Height="30" Content="最小" Click="MinimizedButton_Click" Template="{StaticResource normalButton}"/> <!-- ウィンドウを [元のサイズに戻す]ボタン --> <Button Width="80" Height="30" Content="元サイズ戻す" Click="NormalButton_Click" Template="{StaticResource normalButton}" Style="{StaticResource normalWindowSizeButton}"/> <!-- ウィンドウの [最大化]ボタン --> <Button Width="40" Height="30" Content="最大" Click="MaximizedButton_Click" Template="{StaticResource normalButton}" Style="{StaticResource maximizedButton}"/> <!-- ウィンドウを [閉じる]ボタン --> <Button Width="40" Height="30" Content="閉じ" Click="CloseButton_Click" Template="{StaticResource normalButton}"/> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 4つのボタンそれぞれに 同じテンプレートを付けようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 この グリッド レイアウト の XAML が <strong>見やすくなるように</strong> 脳をフル回転 させてんのね」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 他人が書いた <code>Template</code> とか <code>Style</code> とか、結局<br /> コード書いて 実行してみるまで何が起こるか分からないから、<br /> <strong>再利用するために必要な勘が無くて、一から書き直す</strong> ことになるよな」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 <strong>圧倒的に 自由自在に WPF を使いこなす底力を上げるしかないぜ。</strong><br /> <strong>前担当者のスキルレベルを計れる程度に自分が詳しくなければ、自分に把握できないコードが出てくるぜ</strong>」</p> <h1 id="Step 27. ウィンドウをつかめ"><a href="#Step+27.+%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%82%92%E3%81%A4%E3%81%8B%E3%82%81">Step 27. ウィンドウをつかめ</a></h1> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 お父ん、タイトルバー無くなったんで マウスでつかむところ無いぜ。<br /> どうやって デスクトップ上で ウィンドウを移動させるんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 まず、 アプリケーションに マウスが当たってるかどうか の判定をしたいよな」</p> <p><a href="https://crieit.now.sh/upload_images/3e986eaffa45027646a5c027f668e29f6149dde8c2f51.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3e986eaffa45027646a5c027f668e29f6149dde8c2f51.png?mw=700" alt="20210921wpf260a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 デザインで ちり紙 を選んで 雷マークを選んで <code>MouseDown</code> の右横のテキストボックスを ダブルクリックしてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/a6f09449dcdb6c58243b7586c18ac15f6149de804b589.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a6f09449dcdb6c58243b7586c18ac15f6149de804b589.png?mw=700" alt="20210921wpf261a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 コードが出てきて、 <code>Rectangle_MouseDown</code> というスケルトンができてるな」</p> <p><a href="https://crieit.now.sh/upload_images/a3f8c6bf43178080d7cb165e19e7fdbf6149e1431e5d6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a3f8c6bf43178080d7cb165e19e7fdbf6149e1431e5d6.png?mw=700" alt="20210921wpf262.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 メソッド名を選択して 右クリックから <code>名前の変更</code> で、 <code>DustPaper_MouseDown</code> という名前に変えてみようぜ?<br /> 雰囲気出るな」</p> <p><a href="https://crieit.now.sh/upload_images/f76eabac659c53061cc4750bc4044fd66149e265857b6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f76eabac659c53061cc4750bc4044fd66149e265857b6.png?mw=700" alt="20210921wpf263.png" /></a></p> <pre><code class="csharp"> private void DustPaper_MouseDown(object sender, MouseButtonEventArgs e) { Trace.WriteLine($"マウスボタンを押下しました。 sender.GetType()=[{sender.GetType()}]"); } </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 上記のように1行書き込んでほしいんだが、赤い波線と 豆電球のマークが出ているな。<br /> コンパイル時エラーだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d2cf2c6906a757cb38f4d01fbf242e5c6149e31d9f659.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d2cf2c6906a757cb38f4d01fbf242e5c6149e31d9f659.png?mw=700" alt="20210921wpf264a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 赤い波線は 直せることが多い。 赤い波線にカーソルを合わせて じっとしろだぜ。<br /> 近くに豆電球マークが出てきたらクリック、<br /> 修正方法、または 要らんことの いずれかが出てくるから今回は <code>using System.Diagnostics;</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 直し方を知っている人しか 使いこなせないわよね 豆電球」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 慣れてくれば ガチャガチャ をやりだすぜ。 つまり 選んで直ればOK、直らなければ アンドゥ を繰り返すんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/15e84c7dd3b00198edcb6264db0958dc6149e406d45fe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/15e84c7dd3b00198edcb6264db0958dc6149e406d45fe.png?mw=700" alt="20210921wpf265a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 足りてなかった必要な行を 足してくれたんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/35961361fc85834eeced722be375f0d56149e46496400.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/35961361fc85834eeced722be375f0d56149e46496400.png?mw=700" alt="20210921wpf266.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 エラーが取れたら……」</p> <p><a href="https://crieit.now.sh/upload_images/67a14ae30313733a4b0734bb8c7041e46149e4db584c3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/67a14ae30313733a4b0734bb8c7041e46149e4db584c3.png?mw=700" alt="20210921wpf267a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 右クリックから <code>デザイナーの表示</code> で デザイナーへ戻って」</p> <p><a href="https://crieit.now.sh/upload_images/f7ff58b2a4d98812f77bc0ac8750aa056149e55f27081.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f7ff58b2a4d98812f77bc0ac8750aa056149e55f27081.png?mw=700" alt="20210921wpf268a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>MouseDown="DustPaper_MouseDown"</code> のところを <code>[Ctrl] + [C]</code> でコピー」</p> <p><a href="https://crieit.now.sh/upload_images/4d361a077eca360d36c21d3f76c998046149e879605c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4d361a077eca360d36c21d3f76c998046149e879605c6.png?mw=700" alt="20210921wpf269a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 他のちり紙にも <code>[Ctrl] + [V]</code> で貼り付けろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 実行して これで ちり紙の上で マウスクリックすれば 反応があるかというと……」</p> <p><a href="https://crieit.now.sh/upload_images/8d6d03fde88433d220c1daa1b3bb76426147326069325.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8d6d03fde88433d220c1daa1b3bb76426147326069325.png?mw=700" alt="20210919wpf136a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 なんか上に文字が乗っていてな。失敗する。思ってるようには反応しないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 文字をクリックしたかったのか、紙をクリックしたかったのか 分からんからなあ。<br /> だから Windows のルックスには タイトルバーがあったんだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://takabosoft.com/1360">WPF マウスクリックイベントを透過WPF マウスクリックイベントを透過</a></p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 👆 文字は 受け取ったマウスダウン イベントを 後景のちり紙に 投げ下げる仕組みが なんかあるみたいよ?」</p> <p><a href="https://crieit.now.sh/upload_images/5a9aaf8cade8f511cb05c5fb7381a1c66149e9da9eec5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5a9aaf8cade8f511cb05c5fb7381a1c66149e9da9eec5.png?mw=700" alt="20210921wpf270a1.png" /></a></p> <pre><code class="xaml">IsHitTestVisible="False" </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 これを文字に付けるだけかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/99b284e5b883b925931ca6b09e39261e6149eabcccb2a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/99b284e5b883b925931ca6b09e39261e6149eabcccb2a.png?mw=700" alt="20210921wpf271a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 おお、文字の後ろの四角形に マウスダウンが利いたぜ!」</p> <p><a href="https://crieit.now.sh/upload_images/f39b34a2801e795ba54c1d75cb2a77186147486bb30e1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f39b34a2801e795ba54c1d75cb2a77186147486bb30e1.png?mw=700" alt="20210919wpf138a1.png" /></a></p> <pre><code class="csharp"> /// <summary> /// 紙の上でマウスボタンを押下したとき /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Application_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { var coord = ((Visual)sender).PointToScreen(e.GetPosition((IInputElement)sender)); Trace.WriteLine($"マウスボタンを押下しました。 sender.GetType()=[{sender.GetType()}] x=[{coord.X}] y=[{coord.Y}]"); } </code></pre> <p>📖 <a href="https://crieit.net/drafts/614564402fb73">WPFでマウス操作の練習をしようぜ(^~^)?</a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 マウスカーソルのスクリーン座標での位置の取得の仕方は、以前に練習して記事にしてあるんで気になったら参照しろだぜ」</p> <h1 id="Step 28. ウィンドウ外キャプチャ無理"><a href="#Step+28.+%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E5%A4%96%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E7%84%A1%E7%90%86">Step 28. ウィンドウ外キャプチャ無理</a></h1> <p><a href="https://crieit.now.sh/upload_images/a86f741e718cd92c0995bf2539fd08596147cc700fc2c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a86f741e718cd92c0995bf2539fd08596147cc700fc2c.png?mw=700" alt="20210920wpf139.png" /></a><br /> (👆 ウィンドウ外にマウスカーソルが出ても、マウスの押下状態はキャプチャーされるか?)</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 押下したマウスボタンを離した瞬間をウィンドウは知らないのに、マウスボタンが離されていることって いっぱいあるだろ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 ポップアップが飛び込んでくるような迷惑行為とか、 移動するオブジェクトの方が マウスカーソルの指しているところから出ていったり」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 マウスリリースのイベントが ウィンドウ外で起こっても拾うかどうかってことよね。<br /> 試してみましょう」</p> <p><a href="https://crieit.now.sh/upload_images/b90d2c7214f71c5f5423d4e0095ab0126149ec93dfa3e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b90d2c7214f71c5f5423d4e0095ab0126149ec93dfa3e.png?mw=700" alt="20210921wpf272a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5ab8b43c11b2759539fb13d8a69865d96149ece061df1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5ab8b43c11b2759539fb13d8a69865d96149ece061df1.png?mw=700" alt="20210921wpf273a1.png" /></a></p> <pre><code class="csharp"> private void DustPaper_MouseUp(object sender, MouseButtonEventArgs e) { var coord = ((Visual)sender).PointToScreen(e.GetPosition((IInputElement)sender)); Trace.WriteLine($"マウスボタンが離されました。 sender.GetType()=[{sender.GetType()}] x=[{coord.X}] y=[{coord.Y}]"); } </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 マウスアップを付けてみたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/a8d6c2c422981a0397a67e3574e870f36147d2f585701.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a8d6c2c422981a0397a67e3574e870f36147d2f585701.png?mw=700" alt="20210920wpf142a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ダメだったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 マウスカーソルがウィンドウの範囲外に行ってしまったときのマウスボタンの状態変化は キャプチャーしてくれないのね」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 マウスカーソルが ウィンドウから出たり 入ったりするとき <code>MouseLeave</code> や <code>MouseEnter</code> イベントの通知を<br /> 受け取ることができるはずだから、そこで マウスボタンが押されているか 離されているか 調べることにしようぜ?」</p> <h1 id="Step 29. マウス押下座標、記憶"><a href="#Step+29.+%E3%83%9E%E3%82%A6%E3%82%B9%E6%8A%BC%E4%B8%8B%E5%BA%A7%E6%A8%99%E3%80%81%E8%A8%98%E6%86%B6">Step 29. マウス押下座標、記憶</a></h1> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>ViewModels</code> フォルダーを前に作ってあると思うが……」</p> <p><a href="https://crieit.now.sh/upload_images/386bb3c044c1030b5861f9c99d2706486147d4371f3f6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/386bb3c044c1030b5861f9c99d2706486147d4371f3f6.png?mw=700" alt="20210920wpf143a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>ViewModels</code> フォルダーの下に クラスを作ろうぜ?<br /> <code>[ViewModels]フォルダー - [追加] - [クラス]</code>」</p> <p><a href="https://crieit.now.sh/upload_images/bc3a5829a57f0ffbfa9755327f5bbba26147d66e48ebc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bc3a5829a57f0ffbfa9755327f5bbba26147d66e48ebc.png?mw=700" alt="20210920wpf145a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ファイル名は <code>MainWindowViewModel</code> で」</p> <p><a href="https://crieit.now.sh/upload_images/8d06d6e7e10bd24037e0311a5414cc1e6147df9e68dad.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8d06d6e7e10bd24037e0311a5414cc1e6147df9e68dad.png?mw=700" alt="20210920wpf146a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 作った MainWindowViewModel.cs ファイルのコード画面で 右クリック、 <code>Using の削除と並び替え</code> を選ぶと」</p> <p><a href="https://crieit.now.sh/upload_images/d4fbe6215769e2c110e73aa6169eeaa46147dffeee24a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d4fbe6215769e2c110e73aa6169eeaa46147dffeee24a.png?mw=700" alt="20210920wpf147a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 使ってない using 文を消してくれるぜ。すっきりしたな」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 Go言語と Visual Studio Code の組み合わせなら オートでやってくれるのに」</p> <p><a href="https://crieit.now.sh/upload_images/7e7ef9ba68982b261dd7b8beeef8161d6147e3984e951.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7e7ef9ba68982b261dd7b8beeef8161d6147e3984e951.png?mw=700" alt="20210920wpf148a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 次に手動で namespace に <code>.ViewModels</code> と打鍵してくれだぜ。<br /> そして <code>class</code> の左側に <code>public</code> と打鍵してくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/01ad4e7e3576c855fb50f6860169adef614b0365dfbf6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/01ad4e7e3576c855fb50f6860169adef614b0365dfbf6.png?mw=700" alt="20210921wpf274a1.png" /></a></p> <p>Window タグに:</p> <pre><code class="xaml"> xmlns:viewModels="clr-namespace:WpfExerciseDustPaperOnDesktop.ViewModels" </code></pre> <p>Window タグの子要素として:</p> <pre><code class="xaml"> <!-- このウィンドウに紐づくViewModelです --> <Window.DataContext> <viewModels:MainWindowViewModel/> </Window.DataContext> </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 そのあと 上記のように 2か所追加してくれだぜ。<br /> これで <code>MainWindow.xaml</code> ファイルと <code>MainWindowViewModel.cs</code> ファイルは なんか関係あるんだな、<br /> ということが Visual Studio に伝わるんで 便利になるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/8cf59358a1312ee554e6a5338a1a28a7614b0572a7ba0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8cf59358a1312ee554e6a5338a1a28a7614b0572a7ba0.png?mw=700" alt="20210921wpf275a1.png" /></a></p> <pre><code class="csharp">namespace WpfExerciseDustPaperOnDesktop.ViewModels { using System.Windows; public class MainWindowViewModel { /// <summary> /// マウスボタンを押下した地点です。スクリーン座標です /// </summary> public Point StartPoint { get; set; } } } </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 最初に書くコードは これぐらいかな」</p> <p><a href="https://crieit.now.sh/upload_images/c14819fef7ffff9eb32a3a683390989f614b066224acb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c14819fef7ffff9eb32a3a683390989f614b066224acb.png?mw=700" alt="20210921wpf276a1.png" /></a></p> <pre><code class="csharp"> var viewModel = this.DataContext as MainWindowViewModel; viewModel.StartPoint = coord; </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 2行書き足してくれだぜ。 赤い波線のとこ エラーなんだが」</p> <p><a href="https://crieit.now.sh/upload_images/2608bcda62e92becd6d73cef9ab96529614b07294608a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2608bcda62e92becd6d73cef9ab96529614b07294608a.png?mw=700" alt="20210921wpf277a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 豆電球をクリックして<br /> <code>using WpfExerciseDustPaperOnDesktop.ViewModels;</code> を選んで 修正してくれだぜ」</p> <h1 id="Step 30. 実行中の変数、中身確認"><a href="#Step+30.+%E5%AE%9F%E8%A1%8C%E4%B8%AD%E3%81%AE%E5%A4%89%E6%95%B0%E3%80%81%E4%B8%AD%E8%BA%AB%E7%A2%BA%E8%AA%8D">Step 30. 実行中の変数、中身確認</a></h1> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 コーディングして疲れただろ、動かして 書いたコードが何してるか 見てみようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/b0c8c46a7c602c411f8e4f1569764e87614b0ad5bcbab.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b0c8c46a7c602c411f8e4f1569764e87614b0ad5bcbab.png?mw=700" alt="20210921wpf278a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>viewModel.StartPoint = coord;</code> と書いた行の テキストエディターの左側の端っこの 灰色のところをクリックしてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 何もないとこ クリックすんの?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 そうだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/bddb6de0f4793321b0cc11150a3c9910614b0beb29b99.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bddb6de0f4793321b0cc11150a3c9910614b0beb29b99.png?mw=700" alt="20210921wpf279a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 何か 赤い丸が付いたわよ?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 それが <strong>ブレークポイント</strong> だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/72759222cac925ffa885e951a28d422f614b0c9505280.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/72759222cac925ffa885e951a28d422f614b0c9505280.png?mw=700" alt="20210921wpf280a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 じゃ、 画面上の方の 緑色の右向きの三角形のあたりをクリックして デバッグ実行してみようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/bcab033ec1fd2ac0938280f71c249bd9614b0d2d7d228.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bcab033ec1fd2ac0938280f71c249bd9614b0d2d7d228.png?mw=700" alt="20210921wpf281.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 べつに何も変わらんが」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 ちり紙を クリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/c58f6b92a8ca29c8cc4d2cc98c4f723c614b0dda7d279.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c58f6b92a8ca29c8cc4d2cc98c4f723c614b0dda7d279.png?mw=700" alt="20210921wpf282a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 なんか黄色くなったぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 <strong>制御</strong>(せいぎょ) が ブレークポイントで止まったんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 止まってどうすんの?」</p> <p><a href="https://crieit.now.sh/upload_images/5d9d40250aca9538be78cd7463195d2e614b0ecee2049.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5d9d40250aca9538be78cd7463195d2e614b0ecee2049.png?mw=700" alt="20210921wpf283a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>StartPoint</code> にカーソルを合わせろだぜ。 0, 0 っていう数が 出てくるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f7d0ede2d85ebed3cb76135f6557efc7614b10281fa9d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f7d0ede2d85ebed3cb76135f6557efc7614b10281fa9d.png?mw=700" alt="20210921wpf285a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 左側の三角形をクリックすれば、これが x 座標、 y 座標 ってことが分かるな。まだ 0 が入ってるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/08625ec7ea7985bbec3f9aa4d6765cca614b0f9e086e8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/08625ec7ea7985bbec3f9aa4d6765cca614b0f9e086e8.png?mw=700" alt="20210921wpf284a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ピン マークをクリックしてみろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f37e187a08a8c787da092707c11f954c614b118673f69.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f37e187a08a8c787da092707c11f954c614b118673f69.png?mw=700" alt="20210921wpf286a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ポップアップが出てきて、表示を出しておけるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/03fff7c3e9c6f57133b94c99e75e8fbc614b1205514ad.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/03fff7c3e9c6f57133b94c99e75e8fbc614b1205514ad.png?mw=700" alt="20210921wpf287.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>coord</code> も同様だぜ。 出てくるボタン押しまくって自習しろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/db5dcf1ac0d52365bd8f658b3f5a8652614b132c32b00.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/db5dcf1ac0d52365bd8f658b3f5a8652614b132c32b00.png?mw=700" alt="20210921wpf289a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 デバッグ ツール バーの <code>[ステップ オーバー]</code> をクリックしろだぜ。 <code>F10</code> キーを打鍵しても同じ」</p> <p><a href="https://crieit.now.sh/upload_images/cd6511cf7efb20d3708eb71c23624459614b13a8d51e6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cd6511cf7efb20d3708eb71c23624459614b13a8d51e6.png?mw=700" alt="20210921wpf290a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>StartPoint</code> の中身が変わったな。1行実行されたんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 代入だしな」</p> <p><a href="https://crieit.now.sh/upload_images/efa50fa98e5e71a2e26f9d6d68914469614b144590050.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/efa50fa98e5e71a2e26f9d6d68914469614b144590050.png?mw=700" alt="20210921wpf291a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 気が済んだら 続行ボタンをクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 こういう 数が格納されてるやつ <strong>変数</strong>(へんすう) というが、変数の中身は確認できることは分かったな。<br /> いったん ちり紙を閉じろだぜ」</p> <h1 id="Step 31. MouseMove 忘れてた"><a href="#Step+31.+MouseMove+%E5%BF%98%E3%82%8C%E3%81%A6%E3%81%9F">Step 31. MouseMove 忘れてた</a></h1> <p><a href="https://crieit.now.sh/upload_images/8e7bdba016806a7364b99d60c34f1e8b614b1e53e6600.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8e7bdba016806a7364b99d60c34f1e8b614b1e53e6600.png?mw=700" alt="20210921wpf292a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>MouseMove</code> イベントの <strong>ハンドラ</strong> も付けといてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5adefd8f228c04bdf9159eb13d6f6c6c614b25ff1068c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5adefd8f228c04bdf9159eb13d6f6c6c614b25ff1068c.png?mw=700" alt="20210921wpf293a1.png" /></a></p> <pre><code class="csharp"> private void DustPaper_MouseMove(object sender, System.Windows.Input.MouseEventArgs e) { var coord = ((Visual)sender).PointToScreen(e.GetPosition((IInputElement)sender)); Trace.WriteLine($"マウスを動かしました。 sender.GetType()=[{sender.GetType()}] x=[{coord.X}] y=[{coord.Y}]"); if (e.LeftButton==MouseButtonState.Pressed) { // マウスの左ボタンが押下されているとき var viewModel = this.DataContext as MainWindowViewModel; // メイン ディスプレイの表示の拡大率を取得します Matrix m = PresentationSource.FromVisual(this).CompositionTarget.TransformToDevice; var widthRate = m.M11; var heightRate = m.M22; // 拡大されたサイズで計算したあと、拡大率を 100% に戻してセットします this.Left += (coord.X - viewModel.StartPoint.X) / widthRate; this.Top += (coord.Y - viewModel.StartPoint.Y) / heightRate; viewModel.StartPoint = coord; } } </code></pre> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 コードは これを貼り付けてくれだぜ」</p> <h1 id="Step 32. ちり紙を動かせ"><a href="#Step+32.+%E3%81%A1%E3%82%8A%E7%B4%99%E3%82%92%E5%8B%95%E3%81%8B%E3%81%9B">Step 32. ちり紙を動かせ</a></h1> <p><a href="https://crieit.now.sh/upload_images/c9d3bab7cb1075e6b06b281e1162c48e614b2aa3e78fa.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c9d3bab7cb1075e6b06b281e1162c48e614b2aa3e78fa.gif?mw=700" alt="20210922gif5.gif" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 やったぜ! デスクトップ上で ちり紙を ドラッグ&ドロップすることが できるようになったぜ!」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 やったわね!」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 やったぜ!」</p> <h1 id="Step 33. アイコン"><a href="#Step+33.+%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3">Step 33. アイコン</a></h1> <p><a href="https://crieit.now.sh/upload_images/3f79c916d4eaa33de055a1138b2bb98b614b42a27c061.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3f79c916d4eaa33de055a1138b2bb98b614b42a27c061.png?mw=700" alt="20210922wpf294a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 この かっこわるいアイコンは なんとかならんのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/53daa03f8ca89f3a0f03a5c8678b69c8614b43e3bb99c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/53daa03f8ca89f3a0f03a5c8678b69c8614b43e3bb99c.png?mw=700" alt="20210922wpf295a1.png" /></a></p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.microsoft.com/ja-jp/visualstudio/ide/how-to-specify-an-application-icon-visual-basic-csharp?view=vs-2022">方法: アプリケーション アイコンを指定する (Visual Basic、C#)</a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ソリューション エクスプローラー から プロジェクトを右クリックして、<code>プロパティ</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/9000fdbbe3969565b3c49ef8b28fbcbb614b446ecda04.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9000fdbbe3969565b3c49ef8b28fbcbb614b446ecda04.png?mw=700" alt="20210922wpf296a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[アプリケーション] - [リソース] - [参照...]</code> をクリックして アイコン ファイルを選べば OK だぜ。<br /> ただ、どうやって アイコン(<code>.ico</code>)ファイルを作るんだ、という話しはある」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 1つの <code>.ico</code> ファイルに 小さなアイコン、大きなアイコン と複数 入ってるから、ただの画像じゃないのよ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://forest.watch.impress.co.jp/library/software/gfie/">Greenfish Icon Editor Pro</a></p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 👆 まどのもり に アイコンを作る無料のエディターとか あるけど、海外製で とっつきにくいのよね」</p> <p><a href="https://crieit.now.sh/upload_images/59fdebf167ab7a3e92d8b97270f2b16b614b4a385b9c2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/59fdebf167ab7a3e92d8b97270f2b16b614b4a385b9c2.png?mw=700" alt="20210922wpf297.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 あれっ インターフェースが とっつきやすくなってる!」</p> <p><a href="https://crieit.now.sh/upload_images/5eecd5398fd2ab2d8975baaed8748178614b4ab5a0a6e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5eecd5398fd2ab2d8975baaed8748178614b4ab5a0a6e.png?mw=700" alt="20210922wpf298a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 32 x 32 サイズで 作って ファイル選択」</p> <p><a href="https://crieit.now.sh/upload_images/a3768a4a3e51a4429837b6b2a906a3ed614b4b3a6b45b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a3768a4a3e51a4429837b6b2a906a3ed614b4b3a6b45b.png?mw=700" alt="20210922wpf299a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 他のアイコンと同じように 並んだぜ」</p> <h1 id="Step 34. リリース ビルド"><a href="#Step+34.+%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9+%E3%83%93%E3%83%AB%E3%83%89">Step 34. リリース ビルド</a></h1> <p><a href="https://crieit.now.sh/upload_images/b2b6b67059a87d354ff7f933280953c6614bf949e3608.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b2b6b67059a87d354ff7f933280953c6614bf949e3608.png?mw=700" alt="20210923wpf300a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 今まで ずっと <code>[ソリューション構成]</code> ドロップダウンリストが <code>Debug</code> のまま 実行してたと思う」</p> <p><a href="https://crieit.now.sh/upload_images/6b4f9d1f36021e6072e6694c03ad6f6c614bf9e605f60.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6b4f9d1f36021e6072e6694c03ad6f6c614bf9e605f60.png?mw=700" alt="20210923wpf301a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ここから <code>Release</code> (リリース)に切り替えることができるぜ。<br /> 初めて アプリケーションを作ったばかりで 使い込んでいない今の段階では なんか Release モードにしたからといって 嬉しいことは無いと思うぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 企業になると <code>〇〇社様向けリリース</code> とか納品先によって 成果物を分けたり、<br /> <code>〇〇製品(2019年春)</code>、 <code>〇〇製品(2021年夏)</code> といった感じで 製品を分けたり、<br /> <code>〇〇社様向け_〇〇製品(2021年夏)_Debug</code> とか合体して 枝分かれが爆発して 大変な行数になる」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 コンピューター将棋だと <code>Learning</code> モードとか あったかな」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 じゃあ <code>Debug</code> とか <code>Release</code> とかは 初期設定で2個用意されてるだけで 違いはないのか?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 違いはある。 むしろ <code>Release</code> モードのこと よく分かってなければ <code>Debug</code> モードのまま配布した方が<br /> 開発中のコードと同じ動きをするぜ。<br /> 限界の環境の中では、誰もメンテナンスしていない リリースモード を選ぶよりは、達人は <code>Debug</code> モードのまま リリースする」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 わらう」</p> <p><a href="https://crieit.now.sh/upload_images/ad27830d818950305531cd21aa6c3d8b614bff5d4d030.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ad27830d818950305531cd21aa6c3d8b614bff5d4d030.png?mw=700" alt="20210923wpf302a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 リリース モードで実行すると」</p> <p><a href="https://crieit.now.sh/upload_images/9149419fa298c58e1eea037481af95c7614c0021c8328.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9149419fa298c58e1eea037481af95c7614c0021c8328.png?mw=700" alt="20210923wpf303a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ブレークポイント を無効にして 実行するなら <code>[デバッグの続行]</code> 、<br /> <code>Release</code> モードだけど やっぱ ブレークポイント 使いたい、デバッグしたい というときは <code>[マイ コードのみ]を無効にして続行</code> を選べだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 何なんだぜ それ!」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 <code>Release</code> モードを デバッグしたいときって もちろん あるのよ」</p> <p><a href="https://crieit.now.sh/upload_images/7b9629ea603ec8d00f96f29e142a1dfd614c026140b79.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7b9629ea603ec8d00f96f29e142a1dfd614c026140b79.png?mw=700" alt="20210923wpf304a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 おっ ブレークポイント が無視されてるぜ。 重要な機能なんじゃないのか これ?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 デバッグモードで配布して ブレークポイントで止まってたら いやだしな」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 ちり紙は閉じてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/e3e04b4368587c98ad21f36b4760254e614c1462665b2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e3e04b4368587c98ad21f36b4760254e614c1462665b2.png?mw=700" alt="20210923wpf310a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ソリューション エクスプローラー から プロジェクト名を右クリックして<br /> <code>プロパティ</code> をクリックしてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/b8e405659265ea249eee415dd100ac2f614c150840131.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b8e405659265ea249eee415dd100ac2f614c150840131.png?mw=700" alt="20210923wpf311a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[ビルド] - [出力]</code> とクリックしてくれだぜ。 なんか <code>bin\</code> と書いているのが分かれば OK だぜ。<br /> <code>[×]</code> 印をクリックして プロパティは閉じてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/1900bb2f942b3449b5ab3d3219bad53e614c0e8ecea4e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1900bb2f942b3449b5ab3d3219bad53e614c0e8ecea4e.png?mw=700" alt="20210923wpf305a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 続いて ソリューション エクスプローラー から プロジェクト名を右クリックして<br /> <code>エクスプローラーでフォルダーを開く</code> をクリックしてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/43b22b43cfcbcc7e2c7f3512cdef0d01614c1079450be.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/43b22b43cfcbcc7e2c7f3512cdef0d01614c1079450be.png?mw=700" alt="20210923wpf306a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>bin</code> フォルダーを開けていってくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/56a9f20a644e2d22295624fca9d5de9e614c1112b3e29.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/56a9f20a644e2d22295624fca9d5de9e614c1112b3e29.png?mw=700" alt="20210923wpf307a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>.exe</code> ファイルができてるから、ダブルクリックしてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/a567a0a281b71b0e7c6c7fc6cf471355614c118f27473.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a567a0a281b71b0e7c6c7fc6cf471355614c118f27473.png?mw=700" alt="20210923wpf308.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 ちり紙 がでてきたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5d2277f27aca23e485eaa35910d46d32614c122eb075e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5d2277f27aca23e485eaa35910d46d32614c122eb075e.png?mw=700" alt="20210923wpf309a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 作った WPF アプリケーションを配布するときは、このフォルダーの中身を全部 渡せだぜ。<br /> もっと 大がかりなアプリケーションになると、 別のフォルダーと連携したりするんで、大変だが、<br /> この演習課題ぐらいの規模なら フォルダー1つだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 Rust言語なら .exe ファイル1つに全部かためてくれるのに、 WPFは もっさりしてるわねぇ」</p> <h1 id="Step 35. ソリューション プラットフォーム"><a href="#Step+35.+%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3+%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0">Step 35. ソリューション プラットフォーム</a></h1> <p><a href="https://crieit.now.sh/upload_images/385009303c5e4d1999b289c4d72875cc614dcda021830.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/385009303c5e4d1999b289c4d72875cc614dcda021830.png?mw=700" alt="20210924wpf448a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 <code>標準ツールバー</code> で、 <code>ソリューション プラットフォーム</code> というのを 選べるんだが、<br /> Any CPU にしとけば <code>32bit CPU</code> でも <code>64bit CPU</code> でも どちらでも動くから、 <code>PC(パソコン)</code> では ふつうの選択肢だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 また、 32bit CPU のことを <code>x86</code> と よく呼ぶぜ。 Any CPU にしておくと <code>x86</code> のプログラムとしてインストールされるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 これを <strong>64bit CPU</strong> でしか動けなくする のが、 x64 という設定だぜ。<br /> なんで そんな不便なことをするのかというと、ゲーム機とか 32bit に対応する用意がないマシンで動かすときのためだな」</p> <p><a href="https://crieit.now.sh/upload_images/63a2fd498e0e8d1c119cb159cfc7420a614dd277e4a75.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/63a2fd498e0e8d1c119cb159cfc7420a614dd277e4a75.png?mw=700" alt="20210924wpf450a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 Cドライブの下の <code>Program Files</code> フォルダーも、 64bit CPU か、 32bit CPU かで分かれているな。<br /> <code>x86</code> と書いてあるのは 今では 32bit CPU でしか動かないのではなく、 <code>32bit CPU でも動く 64bit CPU のアプリ</code> ぐらいに思っておけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 じゃあ <code>Any CPU</code> のままでいい気がするなあ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 どうやって x64 の設定にするんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/b1dd08c30e563e4c98ce46b05a9740d0614dd14e2adf5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b1dd08c30e563e4c98ce46b05a9740d0614dd14e2adf5.png?mw=700" alt="20210924wpf449a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>構成マネージャー...</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/8c4c3d9cbf215c5bd4f29af3d25b601b614dd3bb544d3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8c4c3d9cbf215c5bd4f29af3d25b601b614dd3bb544d3.png?mw=700" alt="20210924wpf451a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>Debug</code> を <code>Any CPU</code> にして、 <code>Release</code> を <code>x64</code> にするとか、分けることもできるぜ。<br /> というか、分かれているんだぜ。 だから <code>Debug</code> の分と <code>Release</code> の分、両方 設定しないといけないぜ」</p> <p><a href="https://crieit.now.sh/upload_images/acf3493a2ac036c33a11b2b5721d0404614dd46d4fe1b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/acf3493a2ac036c33a11b2b5721d0404614dd46d4fe1b.png?mw=700" alt="20210924wpf452a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[アクティブ ソリューション プラットフォーム]ドロップダウンリスト</code> から <code><新規作成...></code> を選べだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/6ba329357af748581660b36b7da7bf01614dd508cf249.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6ba329357af748581660b36b7da7bf01614dd508cf249.png?mw=700" alt="20210924wpf453.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 で、今までに <code>Any CPU</code> にいろんな設定をしてあるだろうから、それを引き継いで 新しく作ろうぜ、という画面だぜ。<br /> ここで」</p> <p><a href="https://crieit.now.sh/upload_images/fb11683387095705efce15cef33120d4614dd5c397644.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fb11683387095705efce15cef33120d4614dd5c397644.png?mw=700" alt="20210924wpf454a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>x64</code> を選んで <code>[OK]</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/79c1d1e5ec70accbf7859ef991a8865a614dd6bfa2889.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/79c1d1e5ec70accbf7859ef991a8865a614dd6bfa2889.png?mw=700" alt="20210924wpf455a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 分かりにくいんだが、親子関係になっていて、 <code>Debug</code> の <code>x64</code> は こんなテーブルですよ、という表示になっているぜ。<br /> <code>WpfExerciseDustPaperOnDesktop</code> プロジェクトの <code>Debug</code> 構成では プラットフォームは <code>x64</code> ですよ、と書いてあるんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 <code>[閉じる]</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f262e8ad83d8adb74db768b257d95eb0614dd79baf5be.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f262e8ad83d8adb74db768b257d95eb0614dd79baf5be.png?mw=700" alt="20210924wpf456a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 これで <code>Debug</code> モードでは、 <code>x64</code> 専用の実行ファイルが作られるぜ。<br /> 今どき 32bit CPU で動くことまで考えておかなければいけないケースは、ふつうは、無いから x64 専用でいいだろ」</p> <h1 id="Step 36. デプロイ"><a href="#Step+36.+%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4">Step 36. デプロイ</a></h1> <p><a href="https://crieit.now.sh/upload_images/59447c2a5c03b31b0f5c7c219bc0c1ef614c173092d72.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/59447c2a5c03b31b0f5c7c219bc0c1ef614c173092d72.png?mw=700" alt="20210923wpf312a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 ちり紙 を すべてのアプリの一覧に並べるには どうやったらいいんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 それ ショートカット置いてるだけ なんだけどな」</p> <p><a href="https://crieit.now.sh/upload_images/af0af34abbe3cde0f0e1b30632b02185614c191f802df.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/af0af34abbe3cde0f0e1b30632b02185614c191f802df.png?mw=700" alt="20210923wpf313a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 Cドライブの下の <code>Program Files</code> を開けてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/4b1360c95aecaf45a6a0489400b18ce4614c1a5fe6707.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4b1360c95aecaf45a6a0489400b18ce4614c1a5fe6707.png?mw=700" alt="20210923wpf314a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 まあ すでに色々 入ってると思うが……」</p> <p><a href="https://crieit.now.sh/upload_images/fbe75e56bd005c2dafe1c9e84b24c096614c1acfdc25a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fbe75e56bd005c2dafe1c9e84b24c096614c1acfdc25a.png?mw=700" alt="20210923wpf315a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[ホーム] - [新しいフォルダー]</code> をクリックしてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/61eee7e946933237b1759ec4ea85af41614c2fa7452e1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/61eee7e946933237b1759ec4ea85af41614c2fa7452e1.png?mw=700" alt="20210923wpf316.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 わらう」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 構わず <code>[続行]</code> で」</p> <p><a href="https://crieit.now.sh/upload_images/55dc05391695957ecb739dfcfd7fff8a614c304b4dbbc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/55dc05391695957ecb739dfcfd7fff8a614c304b4dbbc.png?mw=700" alt="20210923wpf317a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 なんか フォルダー名に 半角スペース含めるの 違和感あるんだが、周りに雰囲気を揃えた感じの 被らなさそうな名前を付けてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5d63f0d3e5d8d27f535e8a833d35330f614c3169d1a2c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5d63f0d3e5d8d27f535e8a833d35330f614c3169d1a2c.png?mw=700" alt="20210923wpf318a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>.exe</code> が入っているフォルダーを 左に、<br /> <code>Program Files</code> の下に作ったフォルダーを開けて 右に 見えるよう ファイル エクスプローラー を並べたあと、<br /> コピーしたいフォルダーを マウスの右ボタンでクリックして、 マウスカーソルを 右側の ファイル エクスプローラーに移動しろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d23b8b1fcd53086c07c093e4d611a7c6614c322ae3e8f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d23b8b1fcd53086c07c093e4d611a7c6614c322ae3e8f.png?mw=700" alt="20210923wpf319a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 コンテキスト メニューが出てくるんで、 <code>[ここにコピー]</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/79929911ea08abaf092943549848c9bd614c329732bc8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/79929911ea08abaf092943549848c9bd614c329732bc8.png?mw=700" alt="20210923wpf320a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 アクセスが拒否されるが、構わず <code>[続行]</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/535135b9fc8012b6e22ae2eb20ee2d2e614c3307cab1f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/535135b9fc8012b6e22ae2eb20ee2d2e614c3307cab1f.png?mw=700" alt="20210923wpf321a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 フォルダー名を ちょんとクリックして 名前を変えようぜ? <code>dust-paper-on-desktop</code> とかでどうだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/fa12eb76b6889ff52623b98147eef161614c343e3218e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fa12eb76b6889ff52623b98147eef161614c343e3218e.png?mw=700" alt="20210923wpf322a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 構わず <code>続行</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/45b21d664bbc927bc3a130403a64dc9a614c357d80e83.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/45b21d664bbc927bc3a130403a64dc9a614c357d80e83.png?mw=700" alt="20210923wpf323a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>dust-paper-on-desktop</code> フォルダーを開いて <code>.exe</code> ファイルを右クリック、 <code>[ショートカットの作成]</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/030902d0db8b3b140939b6278630e443614c3602a9642.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/030902d0db8b3b140939b6278630e443614c3602a9642.png?mw=700" alt="20210923wpf324a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 こんなとこにショートカットは作れないが デスクトップに作るのなら大目に見てやろうと コンピューター様が おっしゃっているんで<br /> <code>はい</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/12fe2e4b1bc384e9934e756194fc1cee614c37452bd1e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/12fe2e4b1bc384e9934e756194fc1cee614c37452bd1e.png?mw=700" alt="20210923wpf325a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 デスクトップに ショートカットができているな?」</p> <p><a href="https://crieit.now.sh/upload_images/0721b9ab5a9c9fa5bdb1d35b2a43fec9614c385f1c293.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0721b9ab5a9c9fa5bdb1d35b2a43fec9614c385f1c293.png?mw=700" alt="20210923wpf326a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ファイル エクスプローラーから <code>C:\ProgramData\Microsoft\Windows\Start Menu\Programs</code> へアクセスしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5cb5a93f0502b3486197de7e6915b9ca614c3966ab51a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5cb5a93f0502b3486197de7e6915b9ca614c3966ab51a.png?mw=700" alt="20210923wpf327a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ちり紙へのショートカットを右クリック、 ファイル エクスプローラーの タイトルバーの辺りでマウスボタンを離せだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d51d725e13362462bd4cdffede04cb30614c39fa4cc04.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d51d725e13362462bd4cdffede04cb30614c39fa4cc04.png?mw=700" alt="20210923wpf328a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>ここにコピー</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/d8f72e9eea3535ebe98d74bc6200d7d8614c3a5cbe1a2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d8f72e9eea3535ebe98d74bc6200d7d8614c3a5cbe1a2.png?mw=700" alt="20210923wpf329a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>続行</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/d5b66f79900845f6b5470d5a519deab6614c3c4c77421.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d5b66f79900845f6b5470d5a519deab6614c3c4c77421.png?mw=700" alt="20210923wpf330a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ショートカット を作れたな」</p> <p><a href="https://crieit.now.sh/upload_images/27478fea661f482c75320b0de4d73944614c3d329a984.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/27478fea661f482c75320b0de4d73944614c3d329a984.png?mw=700" alt="20210923wpf331a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 でけたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 <strong>めんどくさ!</strong>」</p> <h1 id="Step 37. インストーラー作成"><a href="#Step+37.+%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%A9%E3%83%BC%E4%BD%9C%E6%88%90">Step 37. インストーラー作成</a></h1> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://docs.microsoft.com/en-us/dotnet/desktop/wpf/app-development/deploying-a-wpf-application-wpf?view=netframeworkdesktop-4.8&viewFallbackFrom=netdesktop-5.0">Deploy a WPF Application</a></p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 👆 <strong>デプロイ</strong>(Deploy;ファイルなどの配置、それに関する設定)めんどくさいから インストーラーを作りましょう」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 Microsoft のドキュメントが推奨する製品 使い方 わけ分からんので 他のを当たろうぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://qiita.com/otagaisama-1/items/39bf6852f0e99c761786">なつかしの Visual Studio Installer(の後継)を現役のVisual Studioで使用する</a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 2000年の '00年代は ワケ分からんかったが、 2020年にもなれば 幾分 マシになってるだろうか」</p> <p><a href="https://crieit.now.sh/upload_images/e61a8c2df87bcb081a82fff93b92caae614c42b656b10.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e61a8c2df87bcb081a82fff93b92caae614c42b656b10.png?mw=700" alt="20210923wpf335.png" /></a></p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://marketplace.visualstudio.com/items?itemName=VisualStudioClient.MicrosoftVisualStudio2022InstallerProjects">Microsoft Visual Studio Installer Projects 2022</a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ブログ記事読んでたら 2019 用だったんで、探したら 2022 Preview 用のがあったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/453e85b7389169d0a7ff2fec1c18a9b7614c444868298.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/453e85b7389169d0a7ff2fec1c18a9b7614c444868298.png?mw=700" alt="20210923wpf336a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 インストールし直しで」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 Visual Studio を使っていると インストール進まないみたいなんで、 Visual Studio は閉じておけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/894f8fccbfa8643b06bd88757b9ff18c614c468a94b37.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/894f8fccbfa8643b06bd88757b9ff18c614c468a94b37.png?mw=700" alt="20210923wpf337.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 インストールできたようだな。使ってみるか……。<br /> <code>VSIX</code> ってのは Visual Studio に機能が付くんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/827fb440a8594d4ed17bd8f5442d2ac9614c476740359.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/827fb440a8594d4ed17bd8f5442d2ac9614c476740359.png?mw=700" alt="20210923wpf338a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 2行目の プロジェクトではなく、 1行目の <strong>ソリューション</strong> を右クリック、<br /> <code>[追加] - [新しいプロジェクト]</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/d87317f8da71a5ec0ea7b5bfa314b0ad614c48144f10f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d87317f8da71a5ec0ea7b5bfa314b0ad614c48144f10f.png?mw=700" alt="20210923wpf339a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>Setup Project</code> をクリックして <code>[次へ]</code>」</p> <p><a href="https://crieit.now.sh/upload_images/7906880f8227532b43282a253b26348c614c6f5d3988f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7906880f8227532b43282a253b26348c614c6f5d3988f.png?mw=700" alt="20210923wpf377a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 プロジェクト名には 何をインストールするのか分かるような名前を付けろだぜ。<br /> 例えば <code>Setup1</code> を <code>SetupWpfExerciseDustPaperOnDesktop</code> に変えて <code>[作成]</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/035d382580a029de1931447fad1575a3614c70d29a8ef.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/035d382580a029de1931447fad1575a3614c70d29a8ef.png?mw=700" alt="20210923wpf378a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>SetupWpfExerciseDustPaperOnDesktop</code> プロジェクトが増えてんな」</p> <p><a href="https://crieit.now.sh/upload_images/256654fba4b667c6497c9b27c18ff43b614c7ec417867.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/256654fba4b667c6497c9b27c18ff43b614c7ec417867.png?mw=700" alt="20210923wpf388a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 この最初の画面は <code>[SetupWpfExerciseDustPaperOnDesktop]プロジェクト</code> を右クリックして<br /> <code>[View] - [ファイル システム]</code> をクリックすれば出てくるんで、閉じてしまったときに また出すために 覚えておけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/7d3881515b971ed607ac2601ed82b21d614c71e011187.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7d3881515b971ed607ac2601ed82b21d614c71e011187.png?mw=700" alt="20210923wpf379a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ソリューション エクスプローラーから <code>[SetupWpfExerciseDustPaperOnDesktop]プロジェクト</code> を ちょんとクリックすると<br /> プロパティ が表示されるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/6687471f80f3ed5c5efad0036da2c41f614c9360639f7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6687471f80f3ed5c5efad0036da2c41f614c9360639f7.png?mw=700" alt="20210923wpf371a2.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>Author</code> には作者名を入れろだぜ。ファイルを右クリックしたときのプロパティに出てくる。<br /> <code>Manufacturer</code> は 製造した団体名でも入れろだぜ。インストール先のディレクトリー名になる。<br /> <code>ProductName</code> は (インストーラーではなく)インストールしたいアプリの名前を入れろだぜ。<br /> <code>Title</code> は、どこで使われるんだろうなあ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 <code>RemovePreviousVersions</code> を True にしておくと、古いバージョンがインストールされていれば消してくれるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c9b2fc408b9551e09cdbcedd796af6d614c61b69853e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c9b2fc408b9551e09cdbcedd796af6d614c61b69853e.png?mw=700" alt="20210923wpf369.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 例えば 古いバージョンがすでにインストールされていて、 <code>RemovePreviousVersions</code> を True に設定してないと 上書きインストールできないぜ。<br /> Version 番号をこまめに設定してないと意味ない」</p> <h1 id="Step 38. プラットフォーム選べ"><a href="#Step+38.+%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E9%81%B8%E3%81%B9">Step 38. プラットフォーム選べ</a></h1> <p><a href="https://crieit.now.sh/upload_images/6c80cabb2f20b95db0dd753b3ffc5f83614dda485c9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6c80cabb2f20b95db0dd753b3ffc5f83614dda485c9bc.png?mw=700" alt="20210924wpf457a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 配布するものは <code>Release</code> ビルドを使うのが <strong>ふつう</strong> だぜ。<br /> とはいえ、世の中 <strong>ふつうではないとき</strong> だってあるので <strong>ふつうではないとき</strong> は <code>Debug</code> でビルドして配布することもあるだろう」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 ふつうでありたいものね」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 このあと、うまくいかないこともあるだろうから、そのときは <code>Any CPU</code> を選んで やり直してくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/c1460804b953f94f0837cee6a3eec96d614c73ce95f03.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c1460804b953f94f0837cee6a3eec96d614c73ce95f03.png?mw=700" alt="20210923wpf381a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[Application Folder] - [Add] - [プロジェクトの出力]</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/0c55bfbcb20b3de878f4053fc55020b0614ddefe415cd.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0c55bfbcb20b3de878f4053fc55020b0614ddefe415cd.png?mw=700" alt="20210924wpf460a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ここで 気にしたいのは <code>構成</code> なんだが、何それ? と言うと……」</p> <p><a href="https://crieit.now.sh/upload_images/479350e6babdbe2aa294011de8c52209614ddf9719b9f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/479350e6babdbe2aa294011de8c52209614ddf9719b9f.png?mw=700" alt="20210924wpf461a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 画面 上の方の 標準ツール バーで選ばれているのを <code>(アクティブ)</code> と呼んでいて、<br /> ここでは 間違えのないように <code>Release x64</code> を明示的に選ぶかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 上のでっかい <code>Release</code> とか <code>x64</code> は これからのインストールで 関係なくて、ここで選んだやつが関係あるのね」</p> <p><a href="https://crieit.now.sh/upload_images/4876599337055fab4fc6dffd57b4f8c8614de06b03c49.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4876599337055fab4fc6dffd57b4f8c8614de06b03c49.png?mw=700" alt="20210924wpf462a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[OK]</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/c3e132e810488219af60da5e580aca5c614de0caa8705.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c3e132e810488219af60da5e580aca5c614de0caa8705.png?mw=700" alt="20210924wpf463a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 これが ユーザーのみなさんの、アプリケーションを入れておくためのフォルダーに デプロイ(配備)したいもの に相当するぜ。<br /> <code>.exe</code> ファイルとか入ってるフォルダーとかのことだな」</p> <p><a href="https://crieit.now.sh/upload_images/eb375f168003c565de6302e33086d361614de512eadd9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eb375f168003c565de6302e33086d361614de512eadd9.png?mw=700" alt="20210924wpf466a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 そして セットアップのプロジェクトのプロパティで <code>TargetPlatform</code> が <code>x86</code> になってるかもしれないから……」</p> <p><a href="https://crieit.now.sh/upload_images/f3aaaef267ea5f88b10538c781b4f4ce614de5ba98721.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f3aaaef267ea5f88b10538c781b4f4ce614de5ba98721.png?mw=700" alt="20210924wpf467a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 忘れずに <code>x64</code> に変えておいてくれだぜ」</p> <h1 id="Step 39. ライセンス条項、用意"><a href="#Step+39.+%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E6%9D%A1%E9%A0%85%E3%80%81%E7%94%A8%E6%84%8F">Step 39. ライセンス条項、用意</a></h1> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 <code>ライセンス条項</code> は、 むずかしいから、 分からん人は 読み飛ばせだぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://ytyaru.hatenablog.com/entry/2020/02/18/111111">ライセンスのファイル名はどうすべきか?</a></p> <p><a href="https://crieit.now.sh/upload_images/f9845ee3f46d9b8c26239327982862df614c86f5e7ade.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f9845ee3f46d9b8c26239327982862df614c86f5e7ade.png?mw=700" alt="20210923wpf395a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 Windows のタスク バーから <code>[スタート]ボタン - [Windows アクセサリ] - [ワードパッド]</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/e36f9be1343a6d1be834ca953f8aa2fd614c876094c55.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e36f9be1343a6d1be834ca953f8aa2fd614c876094c55.png?mw=700" alt="20210923wpf396.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 無限に長い紙みたいなのが出てくるぜ。 これを用意しつつ……」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 わたしは <code>MITライセンス</code> を拾ってくるぜ。 お前がどのライセンスを選ぶかは知らん」</p> <p><a href="https://crieit.now.sh/upload_images/b49da5b7ce8431659d5e867bc096b54a614c7b2a7a915.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b49da5b7ce8431659d5e867bc096b54a614c7b2a7a915.png?mw=700" alt="20210923wpf386.png" /></a></p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://opensource.org/licenses/mit-license.php">The MIT License</a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>MITライセンス</code> の原文を ここから 全文選択、コピーし」</p> <p><a href="https://crieit.now.sh/upload_images/d949ab31a65785a55410afd304f9e75b614c8808bc100.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d949ab31a65785a55410afd304f9e75b614c8808bc100.png?mw=700" alt="20210923wpf397.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 WordPad に貼り付け」</p> <p><a href="https://crieit.now.sh/upload_images/853bc3fe26b031d2f9d4e3d41eb82c55614c88629592a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/853bc3fe26b031d2f9d4e3d41eb82c55614c88629592a.png?mw=700" alt="20210923wpf398a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code><YEAR> <COPYRIGHT HOLDER></code> を今の年と 自分の名前に書きかえるぜ。<br /> オープンソースのコミュニティとかの プログラマーの文化的には ここにはコードの作成に直接関わった人間の名前を つらつら書き、 本名が普通だが、<br /> ここは プログラミングの範疇ではなく 法律の範疇なんで お前のことは わたしは知らんので お前の思うようにやれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/717a4301a36dba6b41d3b2fd05053fbc614c897993a39.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/717a4301a36dba6b41d3b2fd05053fbc614c897993a39.png?mw=700" alt="20210923wpf399a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 保存先は あとで移動させるとして どこでもよくて、<br /> <code>[リッチ テキスト形式 (RTF) (*.rtf)]ファイル</code> を選択、 <code>LICENSE.rtf</code> といった名前を付けて <code>[保存]</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 この <code>.rtf</code> とかいうファイル、 WordPad とかで作れるファイル フォーマットで、 わたしは パーサーを書いたこともあるが 読みにくくて嫌になった。<br /> ぜったい XML ファイルとか HTML/CSS の方が優れていると思うぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eb52c234603df8ad014fd1445ae50884614c7ff1523f4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eb52c234603df8ad014fd1445ae50884614c7ff1523f4.png?mw=700" alt="20210923wpf389a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 ライセンスのファイルを添付するために、 <code>[Application Folder] - [Add] - [ファイル]</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/69b5e6af418d39785d5bf8091c67758b614c8b523098f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/69b5e6af418d39785d5bf8091c67758b614c8b523098f.png?mw=700" alt="20210923wpf400a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 さっき作った ライセンスのファイルを開けだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/b77c52c920416f5c1024ed6f396c9fde614c8bde48f91.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b77c52c920416f5c1024ed6f396c9fde614c8bde48f91.png?mw=700" alt="20210923wpf401a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 頒布したいプロジェクトの方ではなく、インストーラーのプロジェクトの方にコピーするわけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/fd33c8e9b7e8e7473b89872ad55b9c53614c819a3f47e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fd33c8e9b7e8e7473b89872ad55b9c53614c819a3f47e.png?mw=700" alt="20210923wpf392a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 次に <code>[WpfExerciseDustPaperOnDesktop]プロジェクト右クリック - [View] - [ユーザー インターフェース]</code> と進んで」</p> <p><a href="https://crieit.now.sh/upload_images/98f81b66c8f6713270e65755e652c30f614c4f5766995.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/98f81b66c8f6713270e65755e652c30f614c4f5766995.png?mw=700" alt="20210923wpf346a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[Install] - [Start] - [ダイアログの追加]</code> と進めだぜ。<br /> これって インストーラーの出てくる画面の順になってそうだよな」</p> <p><a href="https://crieit.now.sh/upload_images/ff31e7d033fb784f97dac8a8ab17ad5e614c5008489d6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ff31e7d033fb784f97dac8a8ab17ad5e614c5008489d6.png?mw=700" alt="20210923wpf347a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[ライセンス条項] - [OK]</code> と進めだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 ぜったい ちり紙に ライセンス条項 要らないと思う」</p> <p><a href="https://crieit.now.sh/upload_images/ed12e3e7486b7dd270f6cfff5d9446e1614c50fedb988.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ed12e3e7486b7dd270f6cfff5d9446e1614c50fedb988.png?mw=700" alt="20210923wpf348a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 右クリックすると <code>上へ移動</code> などで順を変えれるそうだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/e157e21d60ae9d549cb292d2d6e6c1bd614c51cc36a4b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e157e21d60ae9d549cb292d2d6e6c1bd614c51cc36a4b.png?mw=700" alt="20210923wpf349a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>ライセンス条項</code> を選んだまま プロパティ ペーンから <code>License File</code> のドロップダウンリストをクリックして<br /> <code>[(Browse...)]</code> を選ぶと インストーラーで添付したファイルを選べるようなんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/53780cb042e65459dbe8eebd4211675d614c8cc9d399d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/53780cb042e65459dbe8eebd4211675d614c8cc9d399d.png?mw=700" alt="20210923wpf402a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 いろんな種類が選べそうな見た目をしていたが、 テキストファイル(.txt) では ビルド通らなかった。<br /> リッチ テキスト フォーマット(.rtf) にして進めてみるかだぜ」</p> <h1 id="Step 40. アイコン入れろ"><a href="#Step+40.+%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E5%85%A5%E3%82%8C%E3%82%8D">Step 40. アイコン入れろ</a></h1> <p><a href="https://crieit.now.sh/upload_images/02afada0bfe518ece6e52c35cd489387614dbb07f30b0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/02afada0bfe518ece6e52c35cd489387614dbb07f30b0.png?mw=700" alt="20210924wpf432a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>Application Folder</code> を右クリックして <code>[Add] - [ファイル]</code> と進めだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/da66444530203c51048069b8c7da4d1f614dbbdb9a97e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/da66444530203c51048069b8c7da4d1f614dbbdb9a97e.png?mw=700" alt="20210924wpf433a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 まえに アイコン( <code>.icoファイル</code>)作っただろ。 選べだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/63c4fde64bfa3a992fd1ae94da4f3c67614dbc6230102.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/63c4fde64bfa3a992fd1ae94da4f3c67614dbc6230102.png?mw=700" alt="20210924wpf434a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 入ったら OK だぜ」</p> <h1 id="Step 41. ショートカット作成"><a href="#Step+41.+%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E4%BD%9C%E6%88%90">Step 41. ショートカット作成</a></h1> <p><a href="https://crieit.now.sh/upload_images/4d5dec941e835417dd73f1bc114fcce5614da93435964.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4d5dec941e835417dd73f1bc114fcce5614da93435964.png?mw=700" alt="20210924wpf418a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 どこを右クリックすりゃいいのか よく分かってないが なんか右クリックして <code>新しいショートカットの作成</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d912fd29d03abc5284b64deeab3a11fe614daa036a250.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d912fd29d03abc5284b64deeab3a11fe614daa036a250.png?mw=700" alt="20210924wpf419a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>Application Folder</code> をダブルクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/07a31521ffca2c75dea34c423c9ae93a614daa832b833.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/07a31521ffca2c75dea34c423c9ae93a614daa832b833.png?mw=700" alt="20210924wpf420a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>項目の公開 from WpfExerciseDustPaperOnDesktop (Active)</code> をクリックして <code>[OK]</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/9740b5fdf501b8014f06db05ff96dee2614dab0eb57b4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9740b5fdf501b8014f06db05ff96dee2614dab0eb57b4.png?mw=700" alt="20210924wpf421a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 増えてるな」</p> <p><a href="https://crieit.now.sh/upload_images/6eb5499110dec099e81bc029247ec518614dab6d1844f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6eb5499110dec099e81bc029247ec518614dab6d1844f.png?mw=700" alt="20210924wpf422a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 2つ欲しいんで、同じ操作を もう1階 しろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/4daf870600427f3031286172ca65fcef614dabd8297bf.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4daf870600427f3031286172ca65fcef614dabd8297bf.png?mw=700" alt="20210924wpf423a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 名前変えたいんで、右クリックして <code>[名前の変更]</code>」</p> <p><a href="https://crieit.now.sh/upload_images/3fb0004a42a4fb0d5f7ee35cbdf83b9e614dacd2bafe9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3fb0004a42a4fb0d5f7ee35cbdf83b9e614dacd2bafe9.png?mw=700" alt="20210924wpf424a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 例えば <code>Dust paper on the desktop</code> とかに変えようぜ」</p> <p><a href="https://crieit.now.sh/upload_images/757607807e087bf41ba04372786f4c7b614dad41695d2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/757607807e087bf41ba04372786f4c7b614dad41695d2.png?mw=700" alt="20210924wpf425a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 もう片方も同じ名前にしたいんだが、同じ名前のファイルがあるとできないんで <code>ちり紙</code> とでもしておくぜ」</p> <h1 id="Step 42. ショートカット アイコン"><a href="#Step+42.+%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88+%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3">Step 42. ショートカット アイコン</a></h1> <p><a href="https://crieit.now.sh/upload_images/e8a9a1247351326baa204c4de343b16c614dbe40aefa0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e8a9a1247351326baa204c4de343b16c614dbe40aefa0.png?mw=700" alt="20210924wpf435a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>Dust paper on the desktop</code> を選んで プロパティ ペーン の <code>[Icon]ドロップダウンリスト</code> から <code>(Browse...)</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/b2b4ee4c3f5dd995f38c6738b8e3546f614dbef0c21a9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b2b4ee4c3f5dd995f38c6738b8e3546f614dbef0c21a9.png?mw=700" alt="20210924wpf436a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[Browse...]ボタン</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/b8835120e06794862eb47aeb10f70b04614dbf5194e4d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b8835120e06794862eb47aeb10f70b04614dbf5194e4d.png?mw=700" alt="20210924wpf437a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[Application Folder]</code> をダブルクリック」</p> <p><a href="https://crieit.now.sh/upload_images/d1c73dd479f744533aa10782919a38ce614dbfb773e16.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d1c73dd479f744533aa10782919a38ce614dbfb773e16.png?mw=700" alt="20210924wpf438a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 アイコン ファイル(<code>.ico</code>) を選んで <code>[OK]</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/1fee8ce9de56627f1030263ebb3887f0614dc038b408e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1fee8ce9de56627f1030263ebb3887f0614dc038b408e.png?mw=700" alt="20210924wpf439a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 なんだかわかんないんで <code>[OK]</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/15c263d84c3bb327b58e2ee121cfb2e2614dc095c74ca.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/15c263d84c3bb327b58e2ee121cfb2e2614dc095c74ca.png?mw=700" alt="20210924wpf440a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 これでショートカットに アイコンが付いているぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f9ccb3c26cd4d919952c2196db6d1bda614dc0f8ab931.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f9ccb3c26cd4d919952c2196db6d1bda614dc0f8ab931.png?mw=700" alt="20210924wpf441a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>ちり紙</code> ショートカットにも同様に アイコン を付けておいてくれだぜ」</p> <h1 id="Step 43. ショートカット デプロイ"><a href="#Step+43.+%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88+%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4">Step 43. ショートカット デプロイ</a></h1> <p><a href="https://crieit.now.sh/upload_images/4e213a4c5bcfae3fec022f9f34983923614db15f7cb00.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4e213a4c5bcfae3fec022f9f34983923614db15f7cb00.png?mw=700" alt="20210924wpf426a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>Dust paper on the desktop</code> をマウスでドラッグして <code>User's Programs Menu</code> フォルダーへマウスでドラッグ&ドロップしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/0567debc23082ef9e160c0186cd0f85c614db166683aa.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0567debc23082ef9e160c0186cd0f85c614db166683aa.png?mw=700" alt="20210924wpf427a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>ちり紙</code> をマウスでドラッグして <code>User's Desktop</code> フォルダーへマウスでドラッグ&ドロップしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/b2d5536f43d4ab254bac9f9d2f4bb338614db0e428c89.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b2d5536f43d4ab254bac9f9d2f4bb338614db0e428c89.png?mw=700" alt="20210924wpf428a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 すると <code>User's Desktop</code> フォルダーに <code>ちり紙</code> が入ってるな」</p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 迷惑よね」</p> <p><a href="https://crieit.now.sh/upload_images/1f973da4d95f16772be693fcf6536f20614db22aba064.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1f973da4d95f16772be693fcf6536f20614db22aba064.png?mw=700" alt="20210924wpf429a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 すると <code>User's Programs Menu</code> フォルダーに <code>Dust paper on the desktop</code> が入ってるな」</p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 むしゃくしゃした気分のときに このアプリを実行するんだな」</p> <h1 id="Step 44. インストーラー ビルド"><a href="#Step+44.+%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%A9%E3%83%BC+%E3%83%93%E3%83%AB%E3%83%89">Step 44. インストーラー ビルド</a></h1> <p><a href="https://crieit.now.sh/upload_images/24f900ca12549ef30a67df84b1b4560b614ddc9bb3743.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/24f900ca12549ef30a67df84b1b4560b614ddc9bb3743.png?mw=700" alt="20210924wpf459a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[WpfExerciseDustPaperOnDesktop]</code> プロジェクトを右クリックして <code>[リビルド]</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f4db6c93e5709a3297a02d142f71fe61614de7a3a16b6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f4db6c93e5709a3297a02d142f71fe61614de7a3a16b6.png?mw=700" alt="20210924wpf468a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 失敗が 0 なら OK」</p> <p><a href="https://crieit.now.sh/upload_images/39a328b39a9c427529411b91cc6b483e614c8ec6db0ba.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/39a328b39a9c427529411b91cc6b483e614c8ec6db0ba.png?mw=700" alt="20210923wpf405a1.png" /></a></p> <h1 id="Step 45. インストーラー 実行"><a href="#Step+45.+%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%A9%E3%83%BC+%E5%AE%9F%E8%A1%8C">Step 45. インストーラー 実行</a></h1> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[WpfExerciseDustPaperOnDesktop]プロジェクト</code> を右クリック、 <code>[エクスプローラーでフォルダーを開く]</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/9f0d8457088481da8fb69ee74ee77511614c8f51dc543.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9f0d8457088481da8fb69ee74ee77511614c8f51dc543.png?mw=700" alt="20210923wpf406a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>Release</code> フォルダーを開いていけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/92af1f96ca81bd7c1ec764dd80769bfa614c8fb524ee4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/92af1f96ca81bd7c1ec764dd80769bfa614c8fb524ee4.png?mw=700" alt="20210923wpf407a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>SetupWpfExerciseDustPaperOnDesktop.msi</code> ファイルができてるな。ダブルクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/baa541148c034cd809da551cc9e0a405614c940540082.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/baa541148c034cd809da551cc9e0a405614c940540082.png?mw=700" alt="20210923wpf411a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 プロジェクト名ではなく、もっと かっこいい製品名にしなかったのかだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 あれま」</p> <p><a href="https://crieit.now.sh/upload_images/81bf6ea3b76bb4d0170474e1ce9fc388614c907e08328.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/81bf6ea3b76bb4d0170474e1ce9fc388614c907e08328.png?mw=700" alt="20210923wpf409.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 ライセンス条項、さっき作ったファイル でてきたな」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 <code>[同意する]</code> を選んで 次へ」</p> <p><a href="https://crieit.now.sh/upload_images/a22adacd3b5a1d3f9592edc18774a174614de83dbf973.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a22adacd3b5a1d3f9592edc18774a174614de83dbf973.png?mw=700" alt="20210924wpf469a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 <code>Program Files (x86)</code> の方ではないことを確認」</p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 次へ」</p> <p><a href="https://crieit.now.sh/upload_images/29139983f871b28d8cf412dc0494a78e614c949f070bd.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/29139983f871b28d8cf412dc0494a78e614c949f070bd.png?mw=700" alt="20210923wpf413.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 次へ」</p> <p><a href="https://crieit.now.sh/upload_images/b5628df1d32dd7d4271170312d8fc344614c94d46c583.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b5628df1d32dd7d4271170312d8fc344614c94d46c583.png?mw=700" alt="20210923wpf414.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 ほんとにインストールは完了したのかなあ? <code>[閉じる]</code> ぜ」</p> <p><a href="https://crieit.now.sh/upload_images/3d306c7a7b98df53f678cac18eb3e534614de8f92b8aa.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3d306c7a7b98df53f678cac18eb3e534614de8f92b8aa.png?mw=700" alt="20210924wpf470a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c3a25e65d783f26a8ea03b16b9e6832614b35c6dc6c6.png?mw=700" alt="ohkina-hiyoko-futsu2-smartphone-size.png" /></a><br /> 「 👆 ほんとに <code>Doujin Soft Circle Grayscale</code> があるわよ」</p> <p><a href="https://crieit.now.sh/upload_images/7f34732f1cbd808a1f9c1cc3127d3406614de9880454c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7f34732f1cbd808a1f9c1cc3127d3406614de9880454c.png?mw=700" alt="20210924wpf471a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 中身もちゃんと デプロイされてるようだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/90b7f417aa6a16a7c4a7fe8a7abd8f7d614dc25ced8a6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/90b7f417aa6a16a7c4a7fe8a7abd8f7d614dc25ced8a6.png?mw=700" alt="20210924wpf442a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 👆 ちり紙ができてるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/2cfb8cc70b4e2a43a55e9b1fda1f1cdf614dc2dd7b93f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2cfb8cc70b4e2a43a55e9b1fda1f1cdf614dc2dd7b93f.png?mw=700" alt="20210924wpf443a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 すべてのアプリケーション一覧に <code>Dust paper on the desktop</code> ができてるぜ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://blog.goo.ne.jp/yoossh/e/4e45cf315efcbe035c07f9eac3fd2377">Visual Studio 2019でインストーラを作成</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://lipoyang.hatenablog.com/entry/2021/04/11/220145">Visual Studio 2019でインストーラの作り方</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/2kt85ked%28v=vs.100%29">Visual Studio Installer Deployment</a><br /> 📖 <a target="_blank" rel="nofollow noopener" href="https://www.youtube.com/watch?v=6Mfp2EXmVNI">How to Create Setup.exe in Visual Studio 2019 using VS Installer Projects</a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 他に分かんないところがあれば、自分で調べてくれだぜ」</p> <h1 id="Step 46. アンインストール"><a href="#Step+46.+%E3%82%A2%E3%83%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">Step 46. アンインストール</a></h1> <p><a href="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/eddded680c46eb33076bf34ce8733af4614b35805780e.png?mw=700" alt="kifuwarabe-futsu-smartphone-size.png" /></a><br /> 「 こんなアプリ、消してしまおうぜ!」</p> <p><a href="https://crieit.now.sh/upload_images/0dc66f3755e1e95a7ccc9e8966407feb614c66777bb0f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0dc66f3755e1e95a7ccc9e8966407feb614c66777bb0f.png?mw=700" alt="20210923wpf372a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 アンインストールするには <code>[Windows スタート]ボタン - [設定]</code> と進み」</p> <p><a href="https://crieit.now.sh/upload_images/17154be05e3480c5eebd2719e34e444f614c676ac216e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/17154be05e3480c5eebd2719e34e444f614c676ac216e.png?mw=700" alt="20210923wpf373a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>アプリ</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/562de315bb979200d197c486dc5ea410614c6808e76fb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/562de315bb979200d197c486dc5ea410614c6808e76fb.png?mw=700" alt="20210923wpf374a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 消したいアプリをクリック」</p> <p><a href="https://crieit.now.sh/upload_images/31c20c252efbb6db063e5197e4b5405d614c686ed9870.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31c20c252efbb6db063e5197e4b5405d614c686ed9870.png?mw=700" alt="20210923wpf375a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 <code>[アンインストール]ボタン</code> が出てくるのでクリック」</p> <p><a href="https://crieit.now.sh/upload_images/b5daea108bc311b1b90c737106c6bf60614c68d2d0d44.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b5daea108bc311b1b90c737106c6bf60614c68d2d0d44.png?mw=700" alt="20210923wpf376a1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/05162fadfcc38a93b2690d800ca290db614b351ea897d.png?mw=700" alt="ramen-tabero-futsu2-smartphone-size.png" /></a><br /> 「 👆 なんで2回出てくる! <code>[アンインストール]ボタン</code> をクリック。<br /> すぐには 反映されないが、数秒で 消えるぜ」</p> <h1 id="この記事に向かってリンクしてる記事"><a href="#%E3%81%93%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AB%E5%90%91%E3%81%8B%E3%81%A3%E3%81%A6%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%97%E3%81%A6%E3%82%8B%E8%A8%98%E4%BA%8B">この記事に向かってリンクしてる記事</a></h1> <p>📖 <a href="https://crieit.net/drafts/612a14ab6b5fc">WPFって何だぜ(^~^)?</a></p> むずでょ