WPF 標準コントロールデモアプリ (.NET 10)
最新の .NET 10 環境における WPF 標準 UI の挙動を網羅的に確認。 ビルド不要の exe 形式で公開。コードを書く前に「実現可能性」を視覚化する、プロフェッショナルのための検証ツール。
概要:次世代 .NET 環境での UI 検証を一元化
このアプリケーションは、WPF (Windows Presentation Foundation) の標準コントロールが、最新のランタイムである .NET 10 上でどのように動作・描画されるかを一元的に確認するためのデモアプリです。
ボタン、テキストボックス、チェックボックスといった基本要素から、リストビュー、データグリッド、タブコントロールなどの複雑なレイアウト要素までを網羅。単なるカタログではなく、実際の OS 環境下でのフォーカス遷移やレスポンス、デフォルトのビジュアルスタイルを即座に検証できる「動く仕様書」としての役割を果たします。
本ツールは GitHub Releases にてビルド済みの実行ファイル(.exe)を公開しています。 最新の .NET 10 SDK をインストールしていない環境でも、ダウンロードするだけで即座に次世代 WPF の挙動を体験することが可能です。
開発背景:標準機能の「素の美しさ」とポータビリティの両立
WPF は進化を続けていますが、.NET のバージョンアップごとにレンダリングやスタイルに微細な変化が生じます。特に .NET 10 への移行期において、既存の UI 資産が意図通りに動作するかを確認する作業は、開発者にとって避けては通れない課題です。
本ツールの開発において私が最も注力したのは、「外部ライブラリに頼らず、標準機能だけでいかに見やすい UI を構築するか」という点でした。サードパーティ製の UI キットを使えば見栄えは整いますが、それでは「標準の挙動」を確認するという目的がぼやけてしまいます。
そのため、WPF 標準コントロールの構造を崩さず、Style の定義のみで情報の整理と視認性の向上を追求しました。この「制約の中でのデザイン」をビルド済みのアプリとして配布することで、環境構築の壁を取り払い、誰もが「生の WPF」に最速でアクセスできる環境を実現しました。
技術解説:WPF 標準コントロールを美しく保つ Style 設計のコツ
本デモアプリの実装過程で採用した、標準コントロールをカスタマイズする際の設計ポイントを共有します。
1. プロパティの直交性を活かした設計
本アプリでは、各コントロールのプロパティを個別に設定できるよう設計されています。WPF のデータバインディング機能を活用し、特定のプロパティ変更が他の属性を破壊しないよう「直交性」を意識した Style 定義を行っています。これにより、複雑な組み合わせを試してもレイアウトが崩れにくい堅牢な UI を実現しました。
2. 継承(BasedOn)の適切な活用
コードの重複を避けつつ視認性を高めるため、共通の Base Style を定義し、各コントロールで BasedOn を用いて拡張しています。これにより、.NET 10 の新しいレンダリング特性にも一括で対応できる柔軟性を確保しています。
3. リソースディクショナリによる管理の分離
デザイン(XAML)とロジック(C#)を明確に分離し、UI のスタイルはすべて ResourceDictionary で管理しています。GitHub からソースコードを参照した際、特定のコントロールのスタイルだけを自分のプロジェクトに「つまみ食い」して持ち帰りやすい、再利用性の高い構造にしています。
ターゲットユーザー:開発現場での具体的な活用方法
本ツールは、単なる「見本帳」以上の価値を提供します。
- デザイナー: 「WPFで何ができるか」を SDK のインストールなしで把握。実機での挙動を確認することで、エンジニアとの共通言語を構築。
- 設計者・ディレクター: 仕様検討フェーズで「標準コントロールを使えばコストを抑えて実装できるか」といった判断を、exe を動かしながらその場で行えます。
- エンジニア: 最新ランタイム環境での標準的な挙動を、自前でプロジェクトを作ることなくクイックに確認。自身のアプリへの Style 移植元としても活用。
技術スタック
- Runtime: .NET 10
- Framework: WPF
- UI Implementation: XAML (Pure Style Definition / ResourceDictionary)
- Development Environment: C# 14 / Visual Studio 2026
コントロール別解説ページ
アプリでデモしている各コントロールの詳細解説ページを以下に用意しています。 各ページでは、コントロールの概要と、デモしているプロパティの解説・設定値ごとの動作を説明します。
Inputs(入力系)
TextBox
テキスト入力、折り返し、文字種変換、最大文字数など。
PasswordBox
パスワードマスク文字、キャレット色、選択色、最大文字数。
Button
IsCancel、IsDefault、ClickMode、Command、CommandParameter。
RepeatButton
Delay と Interval による連続クリック発火の制御。
ToggleButton
IsChecked の 3 状態(Null/False/True)、IsThreeState。
CheckBox
IsChecked、IsThreeState、VerticalContentAlignment。
RadioButton
GroupName による排他制御、VerticalContentAlignment。
ComboBox
IsEditable、IsReadOnly、SelectedValue、DisplayMemberPath など。
DatePicker
SelectedDate、DisplayDate の範囲、FirstDayOfWeek、SelectedDateFormat。
Slider
値の範囲、向き、目盛り、オートツールチップなど。
Layout(レイアウト系)
Grid
行・列の配置、スパン、SharedSizeGroup、サイズルール。
StackPanel
Orientation、背景色、Z 順。
WrapPanel
Orientation、ItemHeight、ItemWidth。
DockPanel
Dock 添付プロパティ、LastChildFill。
UniformGrid
Columns、Rows、FirstColumn による均等グリッドレイアウト。
Viewbox
Stretch と StretchDirection によるコンテンツのスケーリング。
ScrollViewer
スクロールバー表示設定、遅延スクロール、スクロール状態プロパティ。
Display(表示系)
TextBlock
テキスト、折り返し、省略、フォントプロパティ、文字色、行高。
Label
Target(アクセスキー)、コンテンツ、フォントプロパティ、ボーダー。
ProgressBar
IsIndeterminate モード、Orientation。
GroupBox
ヘッダー、コンテンツ、パディング、フォントプロパティ、ボーダー。
Expander
IsExpanded、ExpandDirection、ヘッダー、コンテンツ、フォントプロパティ。
List(リスト系)
ListBox
SelectionMode、DisplayMemberPath、SelectedValue、スクロールバー。
ListView
GridView 列設定、AllowsColumnReorder、SelectionMode。
TreeView
IsExpanded、IsSelected、HierarchicalDataTemplate。
DataGrid
AutoGenerateColumns、SelectionMode、編集機能など豊富なプロパティ。
Graphics(グラフィック系)
Image
Source、Stretch、StretchDirection。
Canvas
Top/Left/Right/Bottom による絶対座標配置、ZIndex。
InkCanvas
EditingMode、描画属性、ストローク。
Selectors(セレクター系)
Menu(メニュー系)
Menu
IsMainMenu、MenuItem のプロパティ:IsCheckable、Command、Icon など。
ToolBar
オーバーフローアイテム、Band/BandIndex、ToolBarTray の方向。
Overlays(オーバーレイ系)
Resizer(リサイザー系)
ダウンロードとリポジトリ
最新のビルド済み exe の入手、およびソースコードの確認は GitHub より可能です:
🚀 ビルド済み exe をダウンロード (GitHub Releases)
GitHub リポジトリ(ソースコード)を見る