【現在のホワイトボード状況】
■核となる目的:
PowerShell で WPF UI を構築するための知識整理と、継続的な議論管理のためのホワイトボード運用を確立すること。
■運用ルール(絶対遵守):
[固定] AI側発言の末尾に【現在のホワイトボード状況】を必ず提示すること。
[固定] ホワイトボードはコメントブロックで運用すること。
[固定] AIは優秀な書記兼アシスタントオペレーターです。質問内容の要約は控えめにし、ずれた提案を抑止します。またため口は使いません。
[固定] 情報の劣化を防ぐため、ルールの要約・簡略化は禁止し、全文を再出力し続けること。
[固定] 各項目には属性タグ([固定][確定][更新][保留])を付与し、重要度を可視化すること。
[固定] タグルール:
[固定] = 改変禁止
[確定] = 原則削除変更なしで決定事項の積み上げ
[更新] = 進行中の議題
[保留] = 未決または次の議題
■過去の議題([確定] 議題 決定事項):
[確定] WPF UI を PowerShell で構築する際、XAML(Extensible Application Markup Language)は必須ではない。
[確定] 基本的な UI の主要クラス(Window、Button など)は PresentationFramework.dll に含まれている。
[確定] 略語を使用する際は、必ず正式名称(フルスペル)を併記する。
[確定] GDI+(Graphics Device Interface Plus)は WinForms(Windows Forms)、VB6(Visual Basic 6.0)が使用する古い 2D 描画エンジンである。
[確定] WPF(Windows Presentation Foundation)は DirectX(Direct eXtension)ベースの描画方式である。
[確定] WPF のレイアウトは HTML(HyperText Markup Language)的なレイアウトコンテナ方式であり、Canvas=座標配置、Grid=TableLayoutPanel 的、StackPanel=縦横並びという対応関係で理解できる。
[確定] Binding(バインディング)は「UI をコントロールではなくデータとして扱う仕組み」であり、UI は DataContext のプロパティを表示する“ビュー”である。
[確定] WinForms 的な「コントロールに値をセットする」方式とは異なり、WPF では「データがあり、UI はそれを表示する」という考え方になる。
[確定] Binding の構造は「DataContext=ハッシュ」「Binding のプロパティ名=キー」として機能し、UI とデータを分離して管理できる。
[確定] テンプレート(ControlTemplate / DataTemplate / Style)は XAML とコードのどちらでも作成できるが、Template プロパティに別のオブジェクトを入れ替えることで UI 構造を上書きできる。
[確定] XAML は UI の構造を宣言するための設計書であり、読み込み時に .NET の UI オブジェクトツリーを生成するための Blueprint(設計図)である。
[確定] XAML は XML をベースにした UI 専用言語であり、テンプレート・バインディング・リソース・スタイルなど WPF 特有の機能を表現するために最適化されている。
[確定] WPF テンプレートは C# の override(動作の上書き)とは別物であり、Template プロパティに別の ControlTemplate オブジェクトを入れ替えることで UI 構造を丸ごと差し替える WPF 独自の仕組みである。
[確定] DataTemplate は「データ1件 → UI1件」の変換ルールであり、ItemsControl がデータ件数分の UI を生成する仕組みである。
[確定] DependencyProperty は WPF の内部エンジンであり、Binding・Style・Template・Animation など WPF の特徴的な機能を成立させる基盤である。
[確定] DependencyProperty の値決定ルールは優先順位で決まり、強い順に「アニメーション → ローカル値 → Style → Template → 親からの継承 → 既定値」である。
[確定] PowerShell × WPF では DependencyProperty を直接定義・操作する必要はなく、値決定ルールを理解しておくことで Binding や Style が効かない原因を正しく判断できる。
[確定] ローカル値は最強であり、Binding・Style・Template の Setter はローカル値に負ける。
[確定] Binding はローカル値をセットすると切れる。
[確定] Template の Setter は最弱クラスであり、Style やローカル値に上書きされる。
[確定] 親要素からのプロパティ継承(Foreground など)は弱く、子で上書きされると即座に無効になる。
[確定] DependencyProperty の優先順位は「効かなくなる原因」であると同時に、「意図的に UI を上書きするための強力な手段」として利用できる。
■進行中の議題([更新]):
DependencyProperty の優先順位を利用して、意図的に UI の挙動を制御する方法を整理している。
■未決事項・次の論点([保留]):
・PowerShell で DependencyProperty を扱う際の実装例
・Binding の最小例(PowerShell 版)
・Grid を使った配置の最小例
・Canvas を使った WinForms 的配置の例