Проблемы с пространством имен между пользовательскими / пользовательскими элементами управления - PullRequest
0 голосов
/ 05 марта 2012

У меня есть проект, над которым я работал довольно давно, и я столкнулся с проблемой ссылок. В настоящее время схема решения выглядит следующим образом:

Решение

  1. Пространство имен Agent_Toolbox
    • MainWindow
    • CallTemplate (UserControl)
      • Класс CallTemplate
  2. Пространство имен CustomTextBoxes
    • NumberTextBox (CustomControl)
      • NumberTextBox class

Моя проблема в том, что CallTemplate использует один из NumberTextBox пользовательских элементов управления. Мне нужно сослаться на класс CallTemplate из класса NumberTextBox в операторе typeof. то есть:

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

Но что бы я ни пытался, я не могу заставить VS распознавать CallTemplate в этом случае как класс. Я попытался добавить ссылку на NumberTextBox, но это дает мне ошибку круговой избыточности. Я также попытался отделить CallTemplate в отдельном пространстве имен, но затем it не может найти NumberTextBox без циклической избыточности. Единственной вещью, о которой я подумал, было размещение всех пользовательских / пользовательских элементов управления в отдельном проекте в решении, но затем xaml не смог найти CustomTextBoxes для добавления поля в CallTemplate. Я очень расстроен и растерялся, и убежден, что я упускаю что-то простое.

Есть идеи, пожалуйста?

Edit:

Я добавил UserControl в проект CustomTextBoxes. VS studio поместила его в то же пространство имен и сгенерировала

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

Если я пытаюсь переименовать пространство имен, оно переименовывает все пространство имен, а не только этот файл. Поэтому я создал новое пространство имен и вставил в него код CallTemplate. VS отказался от метода InitializeComponent(), сказав, что его не существует в текущем контексте. По сути, мне нужно знать, как перенести одну часть кода пространства имен в другое пространство имен.

1 Ответ

0 голосов
/ 05 марта 2012

Два проекта не могут ссылаться друг на друга. Если бы они это сделали, как бы визуальная студия узнала, что строить в первую очередь? Когда это происходит, это обычно означает, что это недостаток дизайна. Объединяйте свои проекты или используйте ссылки только в одну сторону.

...