none
WPFのWindowをDLLし共有したい RRS feed

  • 質問

  • お世話になります。

    WPFでアプリケーションを複数作っております。

    ログイン画面等の共通機能をDLL化し共有する、といった事をしたい思っておりますが、方法が思いつきません。

    DLLでなくとも、Xamlのデータを外部から読み込み画面だけ生成するだけでも構いませんので、何か方法はないでしょうか?

    2014年7月27日 11:08

回答

  • DLLのプロジェクトを「WPF ユーザーコントロール ライブラリ」として、そのプロジェクトに新しい項目としてウィンドウを追加することでWindowを内部に持ったDLLができますよ。
    あとはそのプロジェクトを参照するか、ビルドで出来上がったdllを参照します。

    あるいはexeプロジェクトのままでも参照できるので先に共通のウィンドウをexeで作ってしまうこともできます。
    さらに、できあがったらプロジェクトのプロパティで出力の形式をクラスライブラリに変更してdllにできます。この方法の場合はapp.xamlが邪魔になるので、app.xamlのビルドアクションを「なし」に変更するか削除する必要があります。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答の候補に設定 星 睦美 2014年7月29日 7:58
    • 回答としてマーク Lupcla 2014年7月29日 8:59
    2014年7月27日 11:54

すべての返信

  • DLLのプロジェクトを「WPF ユーザーコントロール ライブラリ」として、そのプロジェクトに新しい項目としてウィンドウを追加することでWindowを内部に持ったDLLができますよ。
    あとはそのプロジェクトを参照するか、ビルドで出来上がったdllを参照します。

    あるいはexeプロジェクトのままでも参照できるので先に共通のウィンドウをexeで作ってしまうこともできます。
    さらに、できあがったらプロジェクトのプロパティで出力の形式をクラスライブラリに変更してdllにできます。この方法の場合はapp.xamlが邪魔になるので、app.xamlのビルドアクションを「なし」に変更するか削除する必要があります。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答の候補に設定 星 睦美 2014年7月29日 7:58
    • 回答としてマーク Lupcla 2014年7月29日 8:59
    2014年7月27日 11:54
  • 共通で使うものは別に作成するというのは良い発想だと思います。例えば単純に、ログイン画面とその他を別々の2つのプロジェクトに分けて開発し、あとで一つのソリューションにまとめるということもできます。この場合は、共通で使うプロジェクトの出力の種類をクラスライブラリに変更し、app.xaml、app.configを削除します。このようにプロジェクトを改変しますので、元のプロジェクトは残したまま、そのプロジェクトをコピーしたものを、まとめるソリューションに追加しなければなりません。もう少し詳しく書くと、アプリケーションとしてリリースするソリューションが一つと、開発用のソリューションが2つあることになります。アプリケーションとしてリリースする際には、このうちの共通のプロジェクトを丸ごとアプリケーションとしてリリースするソリューションにエクスプローラーでコピーし、クラスライブラリに変更し、app.xaml,app.configを削除してビルドすることになります。
    この方法だと共通のプロジェクトを修正すると全てのアプリケーションで上記の作業がやり直しになるという欠点があります。しかし、逆に言えばそれはメリットにもなり、それぞれが独立しているので、独自にカスタマイズを入れるという運用をすることができます。おそらく、アプリケーションとしてリリースした後は、共通で変更を反映させるというより、後者の要件に対応できる方が適しているように思いますが、このような方法もあるということで参考になれば幸いです。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答の候補に設定 星 睦美 2014年7月29日 7:58
    2014年7月28日 1:30
    モデレータ
  • 星様

    お世話になります。

    exeプロジェクトの出力をクラスライブラリにする方法で目的を達成する事ができました。

    ありがとうございました。 

    2014年7月29日 8:58