| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > добавление объека в список, на панель и в ComboBox |
| Автор: Capflint 28.4.2010, 15:50 | ||||
| проблема: есть несколько UserControl'ов, которые находятся на панели Canvas, и несколько FrameworkElement'ов. каждый FrameworkElement хранит ссылку на UserControl. причем несколько FrameworkElement могут ссылаться на один UserControl. для выбора на какой UserControl ссылаться, есть ComboBox, в котором должны отображаться все UserControl'ы. как это сделать? пробывал так:
При раскрытии списка возникает исключение NullReferenceException. Если добавить строку
то в раскрытом списке появляется имя UserControl (uc1) http://ipicture.ru/Gallery/Viewfull/142747.html, но при выборе элемента списка combobox пуст http://ipicture.ru/Gallery/Viewfull/142755.html. но все равно это не выход. так должно отображаться имя UserControl'а, а мне нужен его внешний вид (сам UserControl). Помогите кто может!!!!! |
| Автор: Sartorius 28.4.2010, 16:13 | ||
Зачем все в коде пишете? Сбиндите в XAML-е ItemsSource у комбобокса к ObservableCollection ваших контролов
ЗЫ Один инстанс контрола может только один раз в дереве видимости появляться |
| Автор: Sartorius 29.4.2010, 12:12 | ||
ObservableCollection умеет уведомлять подписчиков об изменениях (добавление, удаление элементов). Если после биндинга менять коллекцию не собираетесь - подойдет все что реализует IEnumerable Нужно создать копию контрола и добавлять в комбо ее |
| Автор: Capflint 29.4.2010, 12:19 | ||
Это я и так знаю. я не вижу как это мне может помочь. комбобокс у меня существует не всегда, а только тогда, когда потребует пользователь. поэтому, и уведомлять об изменениях нечего как это сделать. после добывления контрола в окно, он может поменять целую кучу свойств (цвет фона, границы, надписи или какие-то свои). а надо, чтоб добавлялся контрол именно такой, какой он есть в данный момент |
| Автор: Sartorius 29.4.2010, 12:50 | ||
Добавьте метод, который позволяет создать копию контрола. Если контрол действительно сложный и содержит пару десятков изменяемых свойств, помещать его в комбо неправильно |
| Автор: Capflint 29.4.2010, 12:52 | ||
| а как тогда быть? может предложите свой способ? П.С. в принципе, можно сделать и вообще без привязки данных
Не знаю зачем вообще я привязку сюда влепил |
| Автор: Sartorius 29.4.2010, 13:03 |
| Если нужно изображение контрола в комбо, можно использовать WritableBitmap http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2009/03/19/silverlight-3-quick-tip-1-how-to-use-writablebitmap.aspx Рендерим контрол в него, ресайзим как надо (типа thumbnail-а получается) и сорцем в Image, а Image в комбо. Как-то так |
| Автор: Capflint 29.4.2010, 13:13 | ||
Спасибо за помощь. я думаю это поможет. но есть еще вопрос:
может сталкивались с этим или знаете в чем причина? |