2012-03-05 3 views
0

나는 꽤 오랫동안 작업해온 프로젝트를 가지고 있으며 참조하는 문제가 발생했습니다. 현재 솔루션의 개요는 다음과 같습니다사용자 정의/사용자 컨트롤 간의 네임 스페이스 문제점

솔루션

  1. Agent_Toolbox 네임 스페이스
    • MainWindow를
    • CallTemplate (UserControl을)
      • CallTemplate 클래스
  2. CustomTextBoxes 네임 스페이스
    • NumberTextBox (CustomControl)
      • NumberTextBox 클래스

내 문제가 CallTemplateNumberTextBox 사용자 지정 컨트롤 중 하나를 사용한다는 것입니다. typeof 문에서 NumberTextBox 클래스 내에서 CallTemplate 클래스를 참조해야합니다. 즉 :

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

하지만 내가 무엇을 시도하든이 인스턴스를 클래스로 인식하도록 VS를 가져올 수는 없습니다. NumberTextBox에 대한 참조를 추가하려고했지만 순환 중복 오류가 발생합니다. 또한 별도의 네임 스페이스에 CallTemplate을 분리하려고 시도했지만 그 다음 은 순환 중복없이 NumberTextBox을 찾을 수 없습니다. 내가 생각한 Ont 객체는 모든 사용자/사용자 정의 컨트롤을 솔루션 내의 별도 프로젝트에 배치했지만 xaml은 CallTemplate에 상자를 추가하기 위해 CustomTextBoxes를 찾을 수 없었습니다. 나는 아주 좌절감이 많고 손실이 심하며, 그것이 내가 누락 된 단순한 것이라고 확신합니다.

어떤 아이디어로주세요?

편집 :

은 내가 CustomTextBoxes 프로젝트에 UserControl을 추가. VS 스튜디오 아니라 단지이 파일의보다 같은 공간 내에 배치하고, 나는 그것이 이름을 변경 네임 스페이스를 전체 네임 스페이스의 이름을 변경하려고하면

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

를 생성합니다. 그래서 아래에 새로운 네임 스페이스를 만들고 그 안에 CallTemplate 코드를 붙여 넣었습니다. VS는 InitializeComponent() 방법으로 괴롭 히고 현재 상황에서는 존재하지 않는다고 말했습니다. 기본적으로 네임 스페이스 코드의 한 부분을 다른 네임 스페이스로 마이그레이션하는 방법을 알아야합니다.

답변

0

두 프로젝트가 서로 참조 할 수 없습니다. 그들이했다면, 어떻게 비주얼 스튜디오가 먼저 구축 할 것인지를 안다. 그런 일이 발생하면 일반적으로 그것이 설계상의 결함이라는 것을 의미합니다. 프로젝트를 결합하거나 참조가 한 방향으로 만 이동하십시오.

+0

두 프로젝트를 하나의 프로젝트에 개별적으로 결합하거나 모든 사용자 정의 컨트롤 라이브러리로 만들겠습니까? –

+0

서로 참조해야하는 경우 동일한 프로젝트에 있어야합니다.하나의 프로젝트 내에서 네임 스페이스로 분리하면이를 구성하는 가장 좋은 방법입니다. –

+0

그래서 그것을하려고 할 때,'InitializeComponent()'메소드는 그것이 현재 컨텍스트에 존재하지 않는다고 말합니다. 어떻게 업데이트 할 수 있습니까? –