Hi, I'm done with my problem.
Here is the code, the result in Gif just bellow
The code to create PushButon disabled for showing a tag and the ComboBox Both stacked
Juste after the listener for the Event
// PushButton for the Label : ScopBox Selector
//-----------------------------
PushButtonData _pbDataScopBoxSelectorLabel = new PushButtonData("Scop Box Label", "Scope box selected", AddInPath, "Sona_Ribbon.ExternalCommandDoNothing");
//-----------------------------
// ComboBoxData for ScopBox Selector
//-----------------------------
ComboBoxData _cbDataScopBoxSelector = new ComboBoxData("ScopBoxSelector");
_cbDataScopBoxSelector.ToolTip = "Select a scope box";
IList<RibbonItem> _lstScopBoxesItemsStacked = _rbPanelPointCloud.AddStackedItems(_pbDataScopBoxSelectorLabel,_cbDataScopBoxSelector);
((PushButton)_lstScopBoxesItemsStacked[0]).Enabled = false;
ComboBox _cbScopBoxSelector = _lstScopBoxesItemsStacked[1] as ComboBox;
// add first element
ComboBoxMemberData comboBoxMemberData = new ComboBoxMemberData("0@Empty", "Please select a ScopeBox");
ComboBoxMember comboboxMember = _cbScopBoxSelector.AddItem(comboBoxMemberData);
//Catch to listen event
_cbScopBoxSelector.DropDownOpened += new EventHandler<Autodesk.Revit.UI.Events.ComboBoxDropDownOpenedEventArgs>(AddNewScopBoxes);
//-----------------------------
Here is the code calling in the event for filling the comboBox with ScopeBoxes of the document
private void FillComboBoxSelector(ComboBox _givenComboBox)
{
// Get all ScopBoxes of Document
ElementCategoryFilter _cFilter = new ElementCategoryFilter(BuiltInCategory.OST_VolumeOfInterest);
FilteredElementCollector _feCollector = new FilteredElementCollector(_uiApplication.ActiveUIDocument.Document);
IList<Element> _elements = _feCollector.OfCategory(BuiltInCategory.OST_VolumeOfInterest).ToElements();
// add the first item if combo is empty
if (_givenComboBox.GetItems().Count()==0)
{
ComboBoxMemberData comboBoxMemberData = new ComboBoxMemberData("0@Empty", "Please select a ScopeBox");
ComboBoxMember comboboxMember = _givenComboBox.AddItem(comboBoxMemberData);
}
// put all existing items unvisible
foreach (ComboBoxMember comboboxMember in _givenComboBox.GetItems())
{
comboboxMember.Visible = false;
}
// For each scoBoxes in Document
foreach (Element elem in _elements)
{
bool alreadyContained = false;
string str_name = elem.UniqueId.ToString() + "@" + elem.Name;
foreach (ComboBoxMember comboboxMember in _givenComboBox.GetItems())
{
// If already exists, so put to invisible, delete is impossible
if (comboboxMember.Name == str_name)
{
alreadyContained = true;
comboboxMember.Visible = true;
break;
}
}
// Create the item if not exists, so if it's new or renamed
if (!alreadyContained)
{
ComboBoxMemberData comboBoxMemberData = new ComboBoxMemberData(str_name, elem.Name);
ComboBoxMember comboboxMember = _givenComboBox.AddItem(comboBoxMemberData);
comboboxMember.Visible = true;
}
}
_givenComboBox.GetItems()[0].Visible = true;
////////////////////////////
}

Pierre NAVARRA
SONA-Architecture.
http://www.sona-architecture.com
https://fr.linkedin.com/in/pierre-navarra-62032a107