2012-03-05 144 views
0

我有一个项目,我一直在努力了很长一段时间,并且遇到了引用问题。目前,该解决方案的轮廓看起来是这样的:自定义/用户控件之间的名称空间问题

解决方案

  1. Agent_Toolbox命名空间
    • 主窗口
    • CallTemplate(用户控件)
      • CallTemplate类
  2. CustomTextBoxes命名空间
    • 数字框(CustomControl)
      • 数字框类

我的问题是CallTemplate使用NumberTextBox自定义控件之一。我需要在typeof语句中引用NumberTextBox类中的CallTemplate类。即:

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

但无论我尝试我不能让VS认识到在这个实例中的CallTemplate作为一个类。我尝试添加对NumberTextBox的引用,但它给了我一个循环冗余的错误。我也尝试将CallTemplate分隔到一个单独的名称空间中,但后来找不到NumberTextBox而没有循环冗余。我想要做的事情是将所有用户/自定义控件放置到解决方案中的单独项目中,但是然后xaml无法找到CustomTextBoxes以将该框添加到CallTemplate中。我非常沮丧,不知所措,并相信这是我错过的简单事情。

有什么想法吗?

编辑:

我添加了一个用户控件到CustomTextBoxes项目。 VS工作室把它放在同一个命名空间内,并产生

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

如果我试图重新命名它重命名命名空间中的整个命名空间,而不只是该文件的。于是我在下面创建了一个新的名称空间,并在其中粘贴了CallTemplate代码。 VS在InitializeComponent()方法中踌躇不前,称在当前情况下它不存在。基本上我需要知道如何将命名空间代码的一部分迁移到不同的命名空间。

回答

0

两个项目不能相互引用。如果他们这样做了,视觉工作室如何知道首先构建哪个?发生这种情况通常意味着这是一个设计缺陷。结合你的项目,或者只有一种方法。

+0

你的意思是把两者合并到一个项目中,或者把它全部制作成一个自定义控制库? – 2012-03-05 18:45:45

+0

如果他们必须相互引用,那么他们需要在同一个项目中。在一个项目中按命名空间分隔将是组织它的好方法。 – 2012-03-05 18:49:22

+0

所以在试图做到这一点时,'InitializeComponent()'方法表示它在当前上下文中不存在。我如何更新? – 2012-03-05 19:32:54

相关问题