私はかなり長い間取り組んできたプロジェクトを持っており、参照する問題にぶつかってきました。現在、ソリューションの概要は、次のようになります。カスタム/ユーザーコントロール間のネームスペースの問題
ソリューション
- Agent_Toolbox名前空間
- メインウィンドウ
- CallTemplate(ユーザーコントロール)
- CallTemplateクラス
- CustomTextBoxes名前空間
- NumberTextBox(CustomControl)
- NumberTextBoxクラス
- NumberTextBox(CustomControl)
私の問題はCallTemplate
がNumberTextBox
カスタムコントロールの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()
メソッドでは、現在のコンテキストでは存在しないと言っています。基本的には、名前空間のコードの一部を別の名前空間に移行する方法を知る必要があります。
両方のプロジェクトを個別に1つのプロジェクトに結合するか、すべて1つのカスタムコントロールライブラリにすることを意味しますか? –
お互いを参照しなければならない場合は、同じプロジェクトにする必要があります。1つのプロジェクト内で名前空間で区切ることは、それを整理するのに最適な方法です。 –
これを行うために、 'InitializeComponent()'メソッドは現在のコンテキストに存在しないことを示します。どうすれば更新できますか? –