はじめに
3日間の昼間と2夜(深夜2時まで)を経て、Dotnet9編集者は何度も修正や推敲を重ね、ようやくこの記事を完成させました(やや長いので、スマホユーザーは通信量にご注意ください)。まったく編集者も大変だったものです。
この記事を書き終えて、私は《HandyControl》コントロールライブラリの作者や多くの貢献者たちが、昼夜を問わずこのコントロールライブラリを作り上げるために、さまざまな研究やエラー処理に取り組んだ光景を想像できます。彼らはなんと情熱に溢れ、分かち合いを好む人々なのでしょう。このような素晴らしいコントロールライブラリをWPF従事者に共有してくださり、ありがとうございます。
記事が長いため、以下のナビゲーションディレクトリを参照し、読者の関心に応じてクリックするか、Ctrl + F でよく使うコントロール名を検索して読むことをおすすめします。もちろん、筆者は読者が記事の順序に沿って読んでくれることを願っていますが、はは。
1. 記事の冒頭に書いておくこと
ブログ園のユーザー @郭達·斯坦森 の推薦を受けて、Dotnet9編集者は本記事でオープンソースC# WPFコントロールライブラリ《HandyControl》を紹介します。皆さんに気に入っていただければ幸いです。また、優秀なオープンソースWPFコントロールライブラリの推薦も歓迎します。dotnet技術への関心とご支援に感謝します。
コメントはこの記事の51階にあります:『《Dotnet9》シリーズ-オープンソースC# WPFコントロールライブラリ2《Panuon.UI.Silver》強力推薦』

本記事以前の2つのコントロールライブラリ推薦記事の影響について:
前の2つのオープンソースC# WPFコントロールライブラリ(ライブラリ1、ライブラリ2)が多くのネットユーザーに推薦されたことで、Dotnet9編集者は大いに励まされ、dotnetが200年代初頭のように盛り上がっているのを目の当たりにしたかのようでした。
ブログ園での熱心な推薦と数十のコメント、本当にありがとうございます。これにより、質の高いC# WPF共有記事を書き続ける決意を固めました。以下は最近のブログ園トップページ記事推薦のスクリーンショットです:ブログ園。

当サイトの1日あたりのIPアクセス数は新たな高みである500アクセスを突破し、さらに一段階上がりました。多くのネットユーザーに感謝します。

また、2つの記事が大きな反響を呼んだため、Dotnet9編集者の個人ブログサイトにちょっとしたトラブルが発生しました。以下がサイトの最新情報です:

しかし、このトラブルによって質の高い記事の共有を止めるつもりはありません。以上がサイト運営者の声明です。引き続きサイト運営者Dotnet9編集者を応援してください。
2. コントロールライブラリ《HandyControl》について
2.1 交流コミュニティ
GitHubアドレス:https://github.com/HandyOrg/HandyControl
貢献者:NaBian、yanchao891012、ghost1372、guanguanchuangyu、noctwolf、DingpingZhang、xianyun666、M0n7y5、gitter-badger、afunc233 など。
作者おすすめのC#およびWPF学習ブログリンク:納辺、林德熙、呂毅、DinoChan、玩命夜狼 など。
以下は2つのテーマのコントロールライブラリ概要で、先に大まかな印象をつかんでいただき、その後、コントロールライブラリの代表的なケースと詳細なコントロール紹介を始めます。この紹介スタイルを気に入っていただければ幸いです。
2.2 白色テーマ

2.3 黒色テーマ

三、コントロールライブラリに基づく代表的なCase事例
優れたコントロールライブラリには、志を同じくする仲間が集まります。作者が設立した2つのQQグループの人数からもわかるように、このコントロールライブラリを使用している人は多いです。Dotnet9編集者はその中からいくつかの代表的なプロジェクトを選びました。読者の皆さんが《HandyControl》コントロールライブラリが自分のプロジェクトに合っているかどうかをご確認ください。
3.1 Case事例1
ソフトウェア名:phpEnv、閲覧アドレス:https://www.phpenv.cn/
ソフトウェア概要:phpEnvはWindowsシステム上で動作する完全にグリーンなPHP統合環境で、Apache、NginxなどのWebコンポーネントを統合し、異なるPHPバージョンの共存、カスタムPHPバージョン、カスタムMySQLバージョンをサポートします。主に開発環境向けですが、サーバー環境としても使用できます。PHP環境の障害除去、ポート占有の解除、MySQLバージョンの切り替え、MySQLパスワードの変更、他の統合環境との互換性、Redis、MemCacheなどのサービス内蔵、Composerや強力なCMDコマンドライン、TCPポートプロセスリストなどのツールと実用的な機能を備えています。
3.2 Case事例2
ソフトウェア名:AutomnBox、閲覧アドレス:https://github.com/zsh2401/AutumnBox
AutumnBoxとは?Google AdbツールキットをGUIでラップしたデスクトッププログラムで、初心者には分かりやすく、熟練者にも役立ちます。
AutumnBoxでできること:
- デバイスにサードパーティのRecoveryをフラッシュする
- デバイスにファイルをプッシュする
- ワンタッチで黒域サービスを有効化
- ワンタッチで冷蔵庫を有効化
- システムのロックを解除し、完全なroot制御権を取得
- 拡張モジュールを中心とした機能開発思想で、将来的にはますます多くの機能をサポート予定
- ...
四、特徴的なコントロールの詳細紹介
コントロールを紹介するには、特徴的なコントロールのスクリーンショットと説明が欠かせません。本記事を執筆するにあたり、Dotnet9編集者はスクリーンショットやGIFアニメーションの素材を自分で撮影する必要はありませんでした。《HandyControl》コントロールライブラリの作者が非常に優秀で、本記事の画像素材のほとんどは作者のGitHubリポジトリからのものです。読者の皆さんはこちらから直接アクセスしてご覧いただけます:https://github.com/HandyOrg/HandyControl
以下、Dotnet9編集者がHC(以降、この略称でHandyControlを表します)コントロールを紹介する際に、自身の使用経験や見解を加えます。異なる意見や提案があれば、文末にコメントを残すか、作者のQQ交流グループに参加して切磋琢磨しましょう。技術を友として共に成長しましょう。
4.1 各種ボタン
インターフェース開発で最初に思い浮かぶのはボタンです。以下は《HandyControl》がデザインした数種類のボタンです。お気に入りはありますか?
4.1.1 通常ボタン(Button)
通常ボタン(Button)。一般的なデスクトップ開発では、以下のスタイルのボタンで十分だと思います。もちろん、自社デザイナーの要求に応じて、作者のスタイルを拡張・修正することも非常に簡単です。

4.1.2 ラジオボタン (RadioButton)
ラジオボタン (RadioButton) も美しく、インターフェースの美化に欠かせません。

4.1.3 トグルボタン (ToggleButton)
トグルボタン (ToggleButton)。HC作者は数種類のスタイルをデザインしています。便利でしょう?

4.1.4 分割ボタン (SplitButton)
分割ボタン (SplitButton)。ボタンをクリックしてメニューをポップアップ表示するビジネスシナリオで使用できます。

4.1.5 進捗ボタン (ProgressButton)
進捗ボタン (ProgressButton)。ボタン上に進捗を表示するのは作者のアイデアが光ります。ファイルのアップロード時など、インターフェースのスペースが限られている場合に便利です。

4.1.6 ボタングループ (ButtonGroup)
ボタングループ (ButtonGroup)。通常のメニューの代わりとして使用できます。つまり、1階層のみのメニューや、関連する操作が類似している場合に使えます。

4.1.7 Shield
Shield。Shieldマークは、その場の状態統計を表示するのに直感的です。

4.1.8 Pagination
Pagination。テーブルなどでよく使われるページネーションラッパーコントロール。大量データのページ分割表示に便利で、ページネーションコントロールのスタイルも流行に合っています。

4.2 ラベル系コントロール
提供されるラベル系コントロールは多く、Labelに類似または拡張したものをDotnet9編集者はまとめています。
4.2.1 Labelラベル
Labelラベル。よく使われるLabelラベル。きれいでしょう?通常はLabelとTextBoxを組み合わせてフォームとして使用します。

4.2.2 OutlineText
OutlineText 輪郭テキスト。さまざまなフォントを追加すると、テキストもこんなに美しくなります。

4.2.3 Tag
Tag タグ。検索に使用し、よく使う検索条件をTagとして保存すれば、ユーザーが希望する結果を素早くフィルタリングできます。これでユーザー体験が大幅に向上し、ユーザーからも褒められるでしょう。

4.2.4 Badge
Badge バッジ。Webサイトでは、ライブラリのバージョンや重要な情報を表示するためによく使われます。目立ちますよね?ぜひ自分のプロジェクトでも使ってみてください。

4.2.5 Poptip
Poptip バブルヒントコントロール。カスタムヒントがこんなに簡単にできます。

4.3 各種ブロックコントロール
各種ブロックコントロール。よく見られるのはTextBlockで、TextBlockはLabelラベルと機能が似ています。以下が各種ブロックコントロールの表示です:
4.3.1 TextBlock テキストブロック
TextBlock テキストブロック。よく使うテキスト表示。

4.3.2 ImageBlock
ImageBlock 画像ブロック表示。

4.3.3 FloatingBlock
FloatingBlock。このコントロールを見て何を思い浮かべましたか?ライブ配信で配信者にひたすら「いいね」の花を送る様子を思い出しませんか?

4.3.4 RunningBlock
RunningBlock スクロールブロック。電光掲示板のような効果で、デスクトップソフトウェアでのスクロール広告に最適です。動画再生ソフトを作っているなら、弾幕としても便利です。

4.4 入力編集系コントロール
作者が提供する入力編集系コントロールもかなり多く、テキストボックスやパスワードボックスなどがあります。
4.4.1 TextBox
TextBox。比較的標準的な入力テキストボックスコントロール。作者はラベルとテキストボックスを1つのコントロール「コンボボックス」としてカプセル化し、レイアウトを素早く使えるようにしています。

4.4.2 RichTextBox
RichTextBox リッチテキストボックスコントロール。比較的よく見られます。

4.4.3 NumericUpdown
NumericUpdown 数値選択コントロール。数字の入力や選択の検証に便利です。このコントロールは選択系コントロールにも分類できます。

4.4.4 SearchBar
SearchBar 検索バー。数種類のスタイルを提供。普段の開発でもこのようなインターフェースデザインがあるのではないでしょうか?そのまま使って開発効率を上げましょう。

4.4.5 PasswordBox
Dotnet9ではPasswordBoxパスワードボックスをテキストボックスの一種として分類しています。以下がHCのパスワードボックスです。

4.4.6 Gravatar
HandyControl Gravatar。このコントロールは面白く、動的にアバターを生成します。気に入りましたか?とても面白いコントロールです。

4.4.7 ComboBox
ComboBox ドロップダウン。ネイティブのドロップダウンよりずっと見やすく、非常にすっきりしています。

4.5 選択系コントロール
Dotnet9編集者はドロップダウン、チェックボックス、ラジオボタンなどを選択系コントロールとしてまとめています。各コントロールは下図の通り:
4.5.1 Divider
Divider 分割線コントロール。便利で実用的。

4.5.2 《HandyControl》ComboBox
《HandyControl》ComboBox ドロップダウン。実は編集者はこのコントロールを入力編集系コントロールに分類しましたが、これも選択系コントロールです。テキストボックスとリストコントロールを組み合わせたもので、具体的なコードはまだ詳細に見ていませんが、編集者の推測ではそうだと思います。作者はそうしているのでしょうか?

4.5.3 Rate
Rate 評価コントロール。見覚えがありますよね?記事やリソースの評価によく使われます。とても素晴らしいもので、Dotnet9編集者は大好きです。

4.5.4 Slider
Slider 範囲スライダー。黒テーマとの配色がとてもきれいです。

4.5.5 PreviewSlider
PreviewSlider プレビュースライダー。名前の通り、ドラッグ値をリアルタイムに表示します。

4.5.6 CheckBox
CheckBox チェックボックス。スタイルはかなりプロフェッショナルです。

4.5.7 StepBar
StepBar ステップバー。フローに関連する業務がある場合、このコントロールは非常に便利です。よく見られるのはパスワードの再設定で、手順を追って入力・検証させます。

4.5.8 ColorPicker
ColorPicker カラーピッカー。色の選択に便利で、良いものです。

4.6 時間系コントロール
Dotnet9編集者は時間関連のコントロールもまとめています。作者は多くの類似コントロールを実装しており、非常に優秀で、選択して使用するのに非常に便利です。
4.6.1 FlipClock
FlipClock フリップクロック。このコントロール、かっこいいでしょう?カレンダーのようですね?バスケットボールの試合などのスコアボードを思い出しませんか?

4.6.2 TimeBar
TimeBar タイムバー。カスタムのガントチャートに拡張できます。

4.6.3 Calendar
Calendar 日付コントロール。比較的標準的です。

4.6.4 Clock
Clock 時計コントロール。これも比較的標準的です。

4.6.5 CalendarWithClock
CalendarWithClock 日付と時計のコンボコントロール。これは良いもので、使いやすいです。

4.6.6 DatePicker
DatePicker 日付選択コントロール。よく使われるコントロールです。

4.6.7 TimePicker
TimePicker 時間選択コントロール。これもよく使われます。

4.6.8 DateTimePicker
DateTimePicker 日付時刻選択コントロール。この組み合わせは完璧で、編集者は今後のプロジェクトでこのような場面があればぜひ使ってみたいです。

4.7 メニュー系コントロール
Dotnet9編集者はメニュー系、タスクバー系をメニュー系コントロールにまとめ、読者の検索と閲覧を容易にしています。
4.7.1 SideMenu
SideMenu サイドバーメニュー。この種のメニューもよく見られるタイプで、非常に便利です。

4.7.2 ContextMenu
ContextMenu コンテキストメニュー。このような落ち着いた色合いは、Dotnet9編集者も以前よく使っていました。非常にすっきりしていて爽やかです。

4.7.3 ToolBar
ToolBar ツールバー。ナビゲーションメニューと組み合わせて使われることが多く、古典的な組み合わせです。

4.7.4 CirclePanel
CirclePanel 円形レイアウト。Dotnet9編集者は円形メニューと呼ぶのが好きです。スマートフォンではよく使われますが、デスクトップではあまり見かけません。あなたのプロジェクトや製品にこのコントロールを追加すれば、ユーザー体験が一段上がります。もちろん、具体的な業務の状況によりますが、無闇に追加しないでください。

4.7.5 NotifyIcon
NotifyIcon、つまり元のWindowsシステムトレイアイコンのアップグレード版:

トレイアイコンの点滅に対応:

このコントロールは拡張が容易で、360安全卫士のようなトレイメニューを作ることも可能です。これは読者のコーディング力が試されるところです。下図は360安全卫士のシステムトレイメニューです。きれいでしょう?Dotnet9編集者は多くのソフトウェアが360のデザインを模倣しているのを見たことがあります。もちろん編集者自身も含まれます(笑)。ただし、これはHCコントロールではなく、読者自身で実装する必要があります。実際には難しくありません。

4.8 レイアウトおよび画像系コントロール
作者はいくつかの面白いレイアウトコンテナを実装しています。これらはすべてユーザー体験のためであり、苦心の賜物です。
画像関連の表示コントロールはレイアウトコントロールと似ているため、Dotnet9編集者はこれらのコントロールをひとまとめにしています。もちろん、読者の検索や閲覧の便宜のためでもあります。
4.8.1 Border
Border 枠線。画像をグラフィカルに表示する際に非常に美しい。

4.8.2 Brush
Brush ブラシ。28種類のよく使うブラシを提供。業界の良心と言えるでしょう。大いに活用できます。

4.8.3 SwitchConfig
SwitchConfig 設定切り替え。インターフェースの国際化言語選択によく使われます。便利でしょう?

4.8.4 Expander
Expander、標準的なコントロール。

4.8.5 GroupBox
GroupBox グループボックス、標準的なコントロール。

4.8.6 ScrollViewer
ScrollViewer スクロールビューア、比較的よく使われます。

4.8.7 TransitioningContentControl
TransitioningContentControl コンテンツ遷移コントロール。効果は良いでしょう?

4.8.8 TabControl1
TabControl1 タブコントロールスタイル1。

4.8.9 TabControl2
TabControl2 タブコントロールスタイル2。

4.8.10 Drawer
Drawer 引き出しタイプのレイアウトコントロール。スペースに制約のある業務シナリオで非常に便利です。

4.8.11 HoneycombPanel
HoneycombPanel ハニカムレイアウト。面白いレイアウトコントロールです。

4.8.12 Magnifier
Magnifier 拡大鏡コントロール。京东や淘宝で買い物をする際、マウスを商品画像に移動させると拡大表示されます。非常に便利なコントロールです。

4.8.13 Card

4.8.14 Grid
Grid グリッドレイアウト。

4.8.15 AnimationPath
AnimationPath アニメーションパス。かなりかっこいい。

4.8.16 Growl
Growl 情報通知。便利な通知コントロールです。監視系ソフトウェアなどで、重要な情報がアラートされたときに、ソフトウェアのインターフェース内にポップアップ表示したり、ソフトウェアがデスクトップの最前面にない場合にOSのデスクトップに直接ポップアップ表示したりと、非常に柔軟です。

4.8.17 GoToTop

4.8.18 Transfer
Transfer シャトルボックス。複数のリスト項目を移動する際に非常に便利です。

4.8.19 CoverFlow
CoverFlow カバーフロー。画像ブラウズの一形態。

4.8.20 CoverView
CoverView カバービュー。

4.8.21 Carousel
Carousel カルーセル。広告の自動再生。

4.8.22 CompareSlider-h
CompareSlider-h 水平比較スライダー。

4.8.23 CompareSlider-v
CompareSlider-v 垂直比較スライダー。

4.8.24 ImageBrowser
ImageBrowser 画像ブラウズコントロール。これは強力です。通常、画像はカード形式でサムネイルを表示しますが、ユーザーが特定の画像を有用だと感じた場合、このコントロールを使って表示するのは非常に便利です。このコントロールで録画したGIFが9MBを超えるため、動画は表示しません。皆さん自身でダウンロードして体験してください。

4.8.25 WaterfallPanel
WaterfallPanel ウォーターフォールレイアウト。

4.9 Loading/プログレスバー関連コントロール
4.9.1 ProgressBar
ProgressBar プログレスバー。以下のいくつかのスタイルはどれも美しく、自由に選んで使えます。

4.9.2 WaveProgressBar
WaveProgressBar ウェーブプログレスバー。かっこいいでしょう?

4.9.3 CircleProgressBar
CircleProgressBar 円形プログレスバー。

4.9.4 Loading
Loading ローディングバー。データ応答待ちのインターフェースで使用します。ユーザーをただ待たせるよりも、小さなアニメーションでも見せて、インターフェースがフリーズして応答がないと思われないようにしましょう。

4.10 WPF拡張コントロール
C# WPFには実装されていない機能が多くあります。例えば、gif画像の動的表示。デフォルトのImageコントロールでは最初のフレームしか表示されませんが、このコントロールはそれをうまく実現しており、賞賛に値します。
4.10.1 GeometryAnimation、幾何アニメーション

4.10.2 GifImage
GifImage、gif画像の再生。Microsoftも現在この機能をネイティブで実装しておらず、オープンソースコミュニティに頼るしかありません。HC作者の実装は良好で、メモリ使用率も低めです。

4.11 データ表示系コントロール
4.11.1 ListBox

4.11.2 ListView

4.11.3 TreeView

4.11.4 DataGrid

4.11.5 DarkTheme

4.12 フォーム系コントロール
Dotnet9編集者はカスタムフォームやメッセージボックスなどをフォーム系に分類しています。
4.12.1 BlurWindow
BlurWindow 各種フォームをお好みで選択して使用できます。

4.12.2 Dialog
Dialog ダイアログ。Webスタイルのマスク表示で、親フォームとアプリケーションのメインフォームのマスクを区別でき、柔軟に制御できます。

4.12.3 MessageBox

4.12.4 ChatBubble
ChatBubble チャットバブル。IMソフトウェアに非常に実用的です。

以下は編集者自身がHCコントロールライブラリの作者と短いやり取りをシミュレートしたものです:

五、記事の最後に
これはDotnet9編集者が書いた3本目のC# WPFオープンソースコントロールライブラリの紹介記事です。記事を書く過程で、編集者は自ら《HandyControl》コントロールライブラリをダウンロード、コンパイル、デバッグし、このコントロールライブラリとそれに基づく代表的なケースを繰り返し試しました。皆さんを失望させることはないと信じています。
編集者はHCコントロールライブラリを数日間試用し、約90枚のコントロールライブラリ画像を整理・分類することで、このコントロールライブラリについてかなり理解できたと考えています。このコントロールライブラリに含まれるコントロールの種類は非常に豊富で、必要なコントロールは一通り揃っており、普段の仕事で見かけたものもほぼすべて含まれています。仕事での使用をおすすめします(本文中の画像は全部で97枚、合計で約30MB。スマートフォンで閲覧されている読者の皆様にはご負担をおかけしますが、何かお役に立てれば幸いです)。
以上は《HandyControl》の一部のコントロールサンプルの紹介に過ぎません。このコントロールライブラリの作者や多くの貢献者は、常にリポジトリを更新しており、例えばスプライトなどのコントロールが新たに追加されています。より多くのコントロールサンプルについては、GitHubリポジトリにアクセスしてダウンロード、研究、学習してください:https://github.com/HandyOrg/HandyControl
文中のコントロールの使用に関する疑問やその他の提案があれば、記事のコメント欄にご記入ください。編集者は必ず迅速に返信します。このコントロールライブラリを使用する予定であれば、GitHubリポジトリをダウンロードして自分でコンパイルし、研究学習してください。また、HCコントロールライブラリの作者が作成したQQ交流グループに参加して交流・議論することもできます。グループ番号は文中「2.1 《HandyControl》交流コミュニティ」をご参照ください。