- 作品名
- 「
独選要素詰め合わせ 」(WPF用) - 作者名
- はりまお
- 制作機材
- Core i7-4770 3.40GHz + 8GB RAM
- Windows 10 Pro (64bit, 22H2)
- 開発言語:
- Visual Studio Community 2022
- Visual Basic (WPFアプリケーション)
- 動作環境:
- .NET 8.0
- 形態種別
- フリーソフトウェア(ソース同梱)
名前 | バージョン | 概容 |
---|---|---|
ソース | ||
AssortmentOfSelfishFactors | ソースフォルダ | |
アプリケーション | ||
ASF_Sampler.deps.json | ||
ASF_Sampler.dll | 1.0.0.0 | |
ASF_Sampler.exe | 1.0.0.0 | 試用見本 実行ファイル |
ASF_Sampler.runtimeconfig.json | ||
ASF_WPF.dll | Ver.1.0.0.0 | 主題 クラスライブラリ |
ASF_WPF.xml | XMLドキュメントファイル | |
ドキュメント | ||
ASF_WPF-readme.txt | 説明文(本文) |
WPFで制作していると、必要なのになぜか.NETに用意されておらず毎回書かされるコードに出くわします。
そんな定石コードを作者の独断と偏見で詰め込んだのが、今回のクラスライブラリ"ASF_WPF.dll"です。
同梱の"ASF_Sampler.*"は、"ASF_WPF.dll"を使ったサンプルプログラムです。
ダウンロードした圧縮ファイルに収録されている"ASF_WPF.dll"と"ASF_WPF.xml"を、開発しているWPFプロジェクトのフォルダなど都合の良い場所へコピーしてください。
コピーした"ASF_WPF.dll"を、WPFプロジェクトの参照に追加すると、ASF_WPF名前空間以下の各機能が使えるようになります。
"ASF_WPF.xml"が"ASF_WPF.dll"と同じ場所にあることで、IntelliSenseにコメントが表示されるようになります。
あらましは以下の通りです。どれも小粒なので詳細は省きますが、ソースコードやIntelliSense、オブジェクト ブラウザー辺りを手掛かりにして頂けると有り難いです。
XAMLで使うResourceDictionaryが収録されています。
コントロール類が収録されています。
アプリケーションの情報を提供します。
ソートで用いる比較メソッドを収録しています。
フォルダ・ファイル操作用の機能を収録しています。
配布物にはソースも同梱しています。自由に改造してください。
ただし、ソースフォルダに".vs", "bin", "obj"フォルダを含めていません。Visual Studioでソリューション(*.sln)を開いたら、とりあえずソリューションをリビルドしてください。デザイナが使えるようになります。
コードエディタにおいてWindow(Windowに配置されたコントロール含む)への参照箇所にエラーが出る場合があります。エラーのままでもビルドは通りますが、コードエディタの機能が著しく低下し不便です。
そんな時は、ソリューションの".vs"と各プロジェクトの"obj", "bin"フォルダを削除して、再度ソリューションのリビルドを行ってみてください。
特定のプロジェクトでのみの発症なら、当該プロジェクトの"obj", "bin"フォルダを削除して、プロジェクトのリビルドを試してください。
この病は大変しつこく、1回では治まらないかもしれません。治まるまで何度も繰り返してください。ただ、一旦落ち着いたとしても、突然に、幾度となく、再発します。と言うのも、この対処法は作者の経験に基づくものなので、頓珍漢なことを書いているかもしれません、あしからず。(なんだかVisual Studioのバージョンアップを経る毎に悪化している気がする?)
現時点では、今後のバージョンアップにおいて互換性を堅持しない方針です。
本クラスライブラリは、利用するアプリケーションの実行ファイルに添付する形で運用します。これを前提とするなら、添付したdllが勝手に書き変わるなんて事態は起こらないので、同一機能・同一仕様で提供し続ける必要はありません。
アプリケーションを更新する時に、クラスライブラリの最新仕様に合わせれば不都合はないと考えています。
本クラスライブラリまたはサンプルは、ユーザーの指示なしにフォルダ・ファイル・レジストリを操作しません。
ある時、リマインダを作ろうとしていた。毎度のWPFそしてVBだ。そこで表示するメッセージを装飾できるようにしたいと、コモンダイアログ(「色の設定」「フォントの設定」ダイアログボックス)を自前で整備した。
リマインダ計画は一旦頓挫したものの、場つなぎで割り込ませたデスクトップ置時計アプリ(拙作『穴黒』)でも、必要なコントロールを幾つか整備した。
なんだかんだで、度々WPFで不足に感じていた要素が出揃った感がある。再起を図るリマインダ計画(拙作『報勢家~』)でも役立つだろうし、今後の資産となりそうだ。
そんな時、マイクロソフトのVB開発終息宣言やVB関連ドキュメント一時消失(後に回復、単なる引っ越しだった模様)、VB(WPF)チュートリアル系サイトの閉鎖やVB伝道師によるC#講座開講など、VB愛好家の心をザワつかせる出来事が重なった。
危機感を覚えた作者は、次はC#でと意を決する。
C#に乗り換えるとなると、せっかくの資産も全て書き直しを迫られる。一度完成したものを再度なぞるなんて、性に合わないししんどい…あああ、こんな時のクラスライブラリなのか!
クラスライブラリは、中身がVBで書かれていようとも、C#から問題無く呼び出せる。何と安楽な。苦心の自前コモンダイアログ群、穴黒の成果たるユーザーコントロール群、今まで培って(コピペして)きた作者的定石コード群を詰め込めば、作者にとっての万能クラスライブラリとなるだろう。プロセスがブラックボックス化してしまうため、可能なら避けたい手法だが…とうとう禁忌の深淵に踏み込んでしまうのか。
ところが、リマインダで文字装飾が不採用になった余波で、コモンダイアログを組み入れる道理も揺らいでしまう。
まぁまぁまぁ、「コモンダイアログは毎度毎度出番があるわけじゃないじゃないか」「元々クラスライブラリとして仕立てられているじゃないか」「必要な機能を必要な時に持ってこられるのがクラスライブラリの利点じゃないか」「無理に一体化しなくても良いじゃないか」なんて考え直したら、より純で小粋な詰め合わせに仕上がりました。秘伝のタレとして熟成するか、期間限定メニューに終わるか、さてどうなることやら。
毎度、お世話になっております。大変有難く存じます。