Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2013, 20:53   #1
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию Добавить в Grid более одного элемента

Код:
   ListBoxItem _ListBoxItem = null;

   _ListBoxItem = LoginThread as ListBoxItem;
   LoginThread.Name = "LoginThread1";
   OkChild.Children.Insert(0, _ListBoxItem);

   _ListBoxItem = LoginThread as ListBoxItem;
   LoginThread.Name = "LoginThread2";
   OkChild.Children.Insert(1, _ListBoxItem);
Собственно проблема в том что я не могу добавить мой ListBoxItem в Grid более одного элемента.
Вот такой получаю код ошибки: Specified Visual is already a child of another Visual or the root of a CompositionTarget.
Если добавлять пустой ListBoxItem, тогда работает отлично, но именно определить и добавить свой собственный ListBoxItem не получается.
То есть что-то вроде следующего:

1) Таким методом возможно добавить только один элемент в элемент Grid
ListBoxItem obj = new ListBoxItem();
obj = MyListBoxItem;


2) А вот так вот работает
ListBoxItem obj = new ListBoxItem();
for (int i = 0; i < 100500; i++)
MyGrid.Children.Add(obj);

Собственно в чем подвох, объясните пожалуйста где я не прав, за ранее большое спасибо за любые подсказки.

п.с. То есть, получается мне нужно копировать уже существующий элемент с его допустим измененным темплейтом, контейнерами и т.д. и т.п. в новый объект того же типа. ListBoxItem _lbi = new ListBoxItem(); _lbi = MyListBox;

Последний раз редактировалось coNsept; 19.01.2013 в 21:00.
coNsept вне форума Ответить с цитированием
Старый 20.01.2013, 04:33   #2
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Код:
public UIElement DeepCopy(UIElement element)
  {
   string shapestring = System.Windows.Markup.XamlWriter.Save(element);
   StringReader stringReader = new StringReader(shapestring);
   XmlTextReader xmlTextReader = new XmlTextReader(stringReader);
   UIElement DeepCopyobject = (UIElement)System.Windows.Markup.XamlReader.Load(xmlTextReader);
   return DeepCopyobject;
  }
Может кому пригодиться, нужно не ссылаться на объект а клонировать его. Метод немного долгий, может быть кто знает более быстрый вариант решения данной задачи, за ранее буду очень благодарен.

Код:
   ComboBox[] _SelectThread = new ComboBox[LOGIN_THREAD];

   for (int i = 0; i < SelectThread.Items.Count; i++)
    _SelectThread[i] = (ComboBox)this.DeepCopy(SelectThread);

   for (int i = 0; i < SelectThread.Items.Count; i++)
    OkChild.Children.Add((ComboBox)_SelectThread[i]);
Ну и собственно такой вариант Grid допускает добавить более одного элемента так как данные объекты абсолютно разные и больше не ссылаются на один и тот же адрес.

Последний раз редактировалось coNsept; 20.01.2013 в 17:52.
coNsept вне форума Ответить с цитированием
Старый 20.01.2013, 21:28   #3
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Хмм, есть небольшая проблема в том что не копируются события наложенных на определенные объекты. Как можно копировать объект у которого есть определенные подписанные события для нового объекта?
То есть у меня есть некий допустим Border с наложенной кнопкой, кнопка реагирует на определенные события, будь то клик или что-то другое.
Я пытаюсь клонировать данный Border с содержимым данной кнопки и прочее и отображаю его рядом с оригиналом.
Оригинал реагирует на событие нормально, а вот клон, нет! Как лечить собственно, никто не подскажет?
coNsept вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет на загрузку более одного файла. MrJenika PHP 2 20.11.2010 21:37
Максимальное из чисел встречающих в заданной матрице более одного раз Seo-optimist Помощь студентам 1 25.10.2010 15:13
Целочисленный массив. Элементы, которые встречаются более одного раза! Алина18 Помощь студентам 2 21.10.2010 08:10
поиск максимального элемента, который встречается более одного раза счастливая Помощь студентам 1 25.05.2010 16:41
как добавить вычисляемое поле в grid? kate158 Помощь студентам 10 22.08.2008 13:40