Добавление элементов в RibbonDropDown во время выполнения
Итак, у меня есть раскрывающееся меню на ленте с содержимым, которое можно изменить во время его использования. Outlook также рад предоставить мне "добавить" или "вставить" элементы в него, если я не добавляю более 1 элемента.
Если я попытаюсь, мне скажут, что индекс за пределами, а не для расширения верхних границ для меня.
Я нахожу, что если я вставляю его в коллекцию в части кода разработчика, он будет работать нормально, но код разработчика запускается только один раз, если только я не удаляю ленту и не заново ее создаю.
Любые идеи относительно того, как я могу получить эту работу
Ответы
Ответ 1
Вообще говоря, VSTO хочет, чтобы вы полностью описали элементы пользовательского интерфейса, которые вам нужны, в первый раз, когда вас попросят (через GetCustomUI).
Я столкнулся с подобными проблемами раньше с vsto и единственным разумным способом вокруг него, который я нашел, было предварительное заполнение (через конструктор) всех элементов, которые могут вам понадобиться (так что пусть 10 элементов в раскрывающемся списке).
Затем программно СКРЫТЬ или ПОКАЗАТЬ эти элементы и обновить их титры и другие свойства по мере необходимости, пока ваш аддон работает.
Таким образом, вам никогда не придется динамически добавлять или удалять что-либо.
Ответ 2
Попробуйте это. Это должно сработать для вас.
RibbonDropDownItem item
= Globals.Factory.GetRibbonFactory().CreateRibbonDropDownItem();
item.Label = "First Name";
this.cbRecent.Items.Add(item);
Ответ 3
Попробуйте следующее прямо внутри класса ленты:
RibbonDropDownItem item = this.Factory.CreateRibbonDropDownItem();
item.Label = "Text";
combo.Items.Add(item);
Ответ 4
jeds, ваш подход не работает с "новым". Вы должны использовать "Globals.Factory.GetRibbonFactory(). CreateRibbonDropDownItem()". В противном случае вы правы, и ваш подход отлично работает с RibbonGallery.
Этот подход также отлично работает с DropDown. Я все еще часто сталкиваюсь с конфликтом, о котором можно использовать...
Однако, кроме этих двух объектов (Dropdown и RibbonGallery), я считаю, что это неверно. Вам просто нужно вырезать объекты раньше времени и использовать их по мере необходимости.
Вы также можете использовать XML-ленту, но это создает еще больший набор головных болей (по крайней мере, для моих случаев использования).
Ответ 5
Попробуйте использовать галерею лент. Я смог изменить их во время выполнения всего лишь с помощью
foreach (string s in list)
{
RibbonDropDownItem item = new RibbonDropDownItem();
item.Label = s;
rGallery.Items.Add(item);
}
где rGallery - это ленточная галерея.