2012-03-05 101 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

相關問題