C#のWPFでDLL内のユーザーコントロールを利用する

複数のプロジェクトで利用できそうなユーザーコントロールはDLLにして共有するのが良さそうです。

WPFのユーザーコントロールやウィンドウもDLLで作成し、それを参照して利用する事が出来ます。

  

WPFのユーザーコントロールを含むDLLのプロジェクトを作成する方法については

C#のWPFで共有できそうなウインドウをDLL化する」を参照してください。

 

ここではDLLの中にあるユーザーコントロールを利用する方法について解説します。


プロジェクトの参照にDLLを追加

 

先ずはプロジェクトの参照にDLLを追加しましょう。

 

メニューから「プロジェクト(P)」→「参照の追加(R)...」をクリックします。

同一ソリューション内にDLLのプロジェクトがある場合は、左側のリストから「ソリューション」を選ぶとソリューション内のプロジェクトが一覧表示されます。

DLLのプロジェクトにチェックを入れて「OK」ボタンをクリックしましょう。

 

それ以外の場合は「参照(B)...」ボタンからDLLファイルを指定します。


XAMLへDLL内のユーザーコントロールを追加する

以下のサンプルで解説します。

<Window x:Class="WpfTest1.TestWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfTest1"
        xmlns:mylib="clr-namespace:TestLibrary;assembly=TestLibrary"
        mc:Ignorable="d"
        Title="TestWindow" Height="300" Width="300">
    <Grid>
        <mylib:UserControl1/>
    </Grid>
</Window>

ネームスペースの追加

7行目が追加したネームスペースです。

「clr-namespace:」に「assembly」という記述が必要になります。

ここに参照するDLLの名前を指定していきます。

 

clr-namespace:[ネームスペース名];assembly=[dll名]という書式です。

 

この例では「TestLibrary.dll」の中の「TestLibrary」というnamespaceを利用する事を宣言しています。

ユーザーコントロールを追加

11行目でDLL内にあるユーザコントロールを使用しています。

7行目で追加した「xmlns」の名前を使ってコントロールが追加できます。