WPFにおけるユーザーコントロールの作り方、使い方はWindowsFormの場合と、ほとんど同じです。
既にWindowsFormでユーザーコントロールを作成している方は、さらっと目を通すだけで理解できると思います。
ユーザーコントロールを作るのが初めての方でも、すぐ理解して頂けるように図を入れて解説しています。
ユーザーコントロールのメリット
ユーザーコントロールを作ると、こんなメリットがあります。
- 張り付けるだけで簡単に利用でき、プログラムの生産性が上がる
- メイン画面(MainWindowなど)のソースコードを減らして簡素化できる
- ユーザーコントロールに対して不具合修正やバージョンアップをするだけで、それを利用するプログラムは再コンパイルするだけで反映できる。
ユーザーコントロールは使いまわす事で効果を最大限発揮できますが、例え1度しか使わなかったとしても、複雑な処理をユーザーコントロールにしておけば、そこで処理が完結できるため、メンテナンス性が大幅に向上します。
例えば、複数のタブを切り替えて使うようなアプリケーションの場合、タブごとにユーザーコントロールを作ることで、ソースコードのスパゲティ化を避ける事ができます。
WPF版ユーザーコントロールの作り方
ソリューションエクスプローラーから次の手順で進めていけば作れます。
- プロジェクト名を右クリック
- 表示されるメニューから「追加」をクリック
- 表示されるメニューから「ユーザーコントロール」をクリック

「新しい項目の追加」ダイアログが表示されるので、任意の名前を入力し、「追加」をクリックします。

ソリューションエクスプローラーに、今作ったユーザーコントロールが表示されます。
WPF版ユーザーコントロールの編集
MainWindowのプログラムを書くのと全く同じ方法で、ユーザーコントロールにコントロールをドラッグ&ドロップしていきます。
無論、別のユーザーコントロールを張り付けて使う事も可能です。

ユーザーコントロールのサイズ変更方法
ユーザーコントロール自身のウィンドウサイズを変更したい場合、レイアウトエディタでいきなり変更しようとすると、Grid パネルのサイズだけ変更してしまいがちです。
そんな時、次の手順を実行して下さい。
- ドキュメントアウトラインをえらんでコントロールのツリー階層を表示
- UserControlをクリック
- ユーザーコントロールの右下の三角アイコンをドラッグ&ドロップ

ユーザーコントロールのレイアウトを作成したら、あとは通常通りプログラムを書いていくだけです。

WPF版ユーザーコントロールの使い方
使い方は至って簡単です。
標準のコントロールと同様にツールボックスに表示されていますので、ドラッグ&ドロップで張り付けます。
但し、ユーザーコントロールを作成した直後は表示されないことがありますので、この場合は一旦ビルドすれば表示されるようになります。

まとめ
WPFのユーザーコントロールも、WindowsFormと同じ様に作れることがお分かりいただけたかと思います。
ちょっとしたことでも、ユーザーコントロールにしておけば各段にプログラミングの生産性が向上します。
WPFでも是非ユーザーコントロールを活用して下さい。