2012-03-05 11 views
0

私はかなり長い間取り組んできたプロジェクトを持っており、参照する問題にぶつかってきました。現在、ソリューションの概要は、次のようになります。カスタム/ユーザーコントロール間のネームスペースの問題

ソリューション

  1. Agent_Toolbox名前空間
    • メインウィンドウ
    • CallTemplate(ユーザーコントロール)
      • CallTemplateクラス
  2. CustomTextBoxes名前空間
    • NumberTextBox(CustomControl)
      • NumberTextBoxクラス

私の問題はCallTemplateNumberTextBoxカスタムコントロールの1つを使用することです。 typeofステートメントのNumberTextBoxクラス内からCallTemplateクラスを参照する必要があります。すなわち:

ParentControls parentControl = new ParentControls(); 
Visual parent = parentControl.GetParentControls(this, 3); 
if (parent == typeof(CallTemplate)) 
{ 
    //Do something 
} 

私が試しても、私はVSがCallTemplateをこのインスタンスのクラスとして認識させることはできません。私はNumberTextBoxへの参照を追加しようとしましたが、それは私に循環的な冗長性のエラーを与えます。私も別の名前空間にCallTemplateを分離しようとしましたが、は循環冗長なしでNumberTextBoxを見つけることができません。私が思ったOntのことは、すべてのUser/Customコントロールをソリューション内の別のプロジェクトに配置することでしたが、xamlはCallTemplateにボックスを追加するためにCustomTextBoxesを見つけることができませんでした。私はかなり心配していて、失恋していて、シンプルなものだと確信しています。

どのようなアイデアをお願いしますか?

編集:

私はCustomTextBoxesプロジェクトにユーザーコントロールを追加しました。スタジオVS同じ名前空間内に配置され、私はそれではなく、単にこのファイルのより全体の名前空間を、名前の変更、名前空間の名前を変更しようとした場合

public partial class CallTemplate: UserContol 
{ 
    public CallTemplate() 
    { 
     InitializaComponent(); 
    } 
} 

を生成。そこで、新しい名前空間を作成し、その中にCallTemplateというコードを貼り付けました。 VSはInitializeComponent()メソッドでは、現在のコンテキストでは存在しないと言っています。基本的には、名前空間のコードの一部を別の名前空間に移行する方法を知る必要があります。

答えて

0

2つのプロジェクトが互いに参照することはできません。もしそうなら、ビジュアルスタジオはどのようなものを最初に構築するかを知っていますか?それが起こると、それは通常、それが設計上の欠陥であることを意味します。あなたのプロジェクトを結合するか、参照が片方向になるだけです。

+0

両方のプロジェクトを個別に1つのプロジェクトに結合するか、すべて1つのカスタムコントロールライブラリにすることを意味しますか? –

+0

お互いを参照しなければならない場合は、同じプロジェクトにする必要があります。1つのプロジェクト内で名前空間で区切ることは、それを整理するのに最適な方法です。 –

+0

これを行うために、 'InitializeComponent()'メソッドは現在のコンテキストに存在しないことを示します。どうすれば更新できますか? –

関連する問題