Примечание:
делаю так:
Hashtable Devices = new Hashtable();
ComboBox cBox = new ComboBox();
canvas.Children.Add(cBox);
UserControl usercontrol = new UserControl();
usercontrol.Name = "fr1";
Devices.Add(usercontrol.Name, usercontrol);
canvas.Children.Add(usercontrol);
Binding binding = new Binding();
binding.Mode = BindingMode.OneWay;
binding.Source = this.Devices;
binding.Path = new PropertyPath("Values");
cBox.SetBinding(ComboBox.ItemsSourceProperty, binding);
Теперь при раскрытии списка cBox появляется исключение NullReferenceException. А если убрать строку: canvas.Children.Add(usercontrol);, то все работает гладко. Получается нельзя добавлять обин и тот же объект и в хештайбл и на канвас. Это можно как-то обойти?
Примечание:
DisplayMemberPath помог, за что спасибо. но он помог показать строку. но как мне добавить не строку в ComboBox, а внешний вид контрола?
Примечание:
Очень познавательно ;), но не то. у меня есть список всех UserControl'ов в окне, которые будут находиться в нескольких канвасах. по запросу пользователь, нужно динамически создать ComboBox, в котором будет находится все UserControl'ы. ИМХО проще сделать привязку данных к ComboBox.ItemsSourceProperty, чем в цикле перебирать весь список и добавлять объекты в ComboBox.
Примечание:
а пример можно на счет ItemTemplate? просто я немного не пойму причем тут template вообще
Примечание:
на счет вернет значение ToString() - теоретически так, но почему-то не всегда так на практике, убедился из личного опыта. а вообще немного не то, что я хотел уведеть, но тему закрываю, т.к. дальше разобрался сам. да действительно нужно определить ItemTemplate. это некий аналог DisplayMemberPath, только намного круче с возможностями. спасибо за толчек в правильном направлении
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.