独選要素詰め合わせ(WPF用)

作品情報

作品名
独選要素詰め合わせ(ドクセンヨウソツメアワセ)」(WPF用)
作者名
はりまお
制作機材
Core i7-4770 3.40GHz + 8GB RAM
Windows 10 Pro  (64bit, 22H2)
開発言語:
Visual Studio Community 2022
Visual Basic (WPFアプリケーション)
動作環境:
.NET 8.0
形態種別
フリーソフトウェア(ソース同梱)

ダウンロード

ASF_WPF.zip(配布ファイル更新日:2025年01月27日)
収録内容
名前バージョン概容
ソース
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、オブジェクト ブラウザー辺りを手掛かりにして頂けると有り難いです。

ResourceGlossaries フォルダ

XAMLで使うResourceDictionaryが収録されています。

CommonAssets.xaml
各所で使うパラメータやオブジェクト等
PatternBrush.xaml
模様を描くDrawingBrush

UsefulControls 名前空間

コントロール類が収録されています。

NumberBox
上下ボタン付き数値入力用ユーザーコントロール
ProfilePanel
バージョン情報を表示するユーザーコントロール
RestrictionTextBox
入力できる文字を制限できるTextBox

My.Application.Info 名前空間

アプリケーションの情報を提供します。

AssemblyName
名前
Title
タイトル
Description
説明
CompanyName
会社名
ProductName
製品名
Copyright
著作権表記
Trademark
商標表記
Version
バージョン番号
FileVersion
ファイル バージョン
Location
実行ファイルのパス
DirectoryPath
実行ファイルがあるフォルダのパス

SortSupplemant 名前空間

ソートで用いる比較メソッドを収録しています。

LogicalStringComparer
自然順比較(いわゆるエクスプローラの並び順)

StorageIO 名前空間

フォルダ・ファイル操作用の機能を収録しています。

UsefulXML
オブジェクトのシリアライズ及びデシリアライズ(XMLファイルとして保存または復元)
Shortcut
ショートカットの作成・変更
FileSupplement
ファイル操作の補助

ソリューションについて

ソース

配布物にはソースも同梱しています。自由に改造してください。
ただし、ソースフォルダに".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#から問題無く呼び出せる。何と安楽な。苦心の自前コモンダイアログ群、穴黒の成果たるユーザーコントロール群、今まで培って(コピペして)きた作者的定石コード群を詰め込めば、作者にとっての万能クラスライブラリとなるだろう。プロセスがブラックボックス化してしまうため、可能なら避けたい手法だが…とうとう禁忌の深淵に踏み込んでしまうのか。
ところが、リマインダで文字装飾が不採用になった余波で、コモンダイアログを組み入れる道理も揺らいでしまう。
まぁまぁまぁ、「コモンダイアログは毎度毎度出番があるわけじゃないじゃないか」「元々クラスライブラリとして仕立てられているじゃないか」「必要な機能を必要な時に持ってこられるのがクラスライブラリの利点じゃないか」「無理に一体化しなくても良いじゃないか」なんて考え直したら、より純で小粋な詰め合わせに仕上がりました。秘伝のタレとして熟成するか、期間限定メニューに終わるか、さてどうなることやら。

参考・引用文献/拝借物

毎度、お世話になっております。大変有難く存じます。

リファレンス/サンプル

ユーティリティ/ツール