【現在のホワイトボード状況】 ■核となる目的: 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 的配置の例