You can add skin selectors to a toolbar (BarManager) and Ribbon Control to allow users to choose skins at runtime.
将皮肤选择器添加到工具栏
At design time, click the [Add] button in the toolbar, and select a skin selector from the Skin Item sub-menu.

以下皮肤选择器可用:
- Skin Menu (SkinBarSubItem) --- Displays skin names as a menu.
  
- Skin List (SkinDropDownButtonItem) --- Displays skin names as a scrollable list with a built-in search box to locate skins by name.
  
- Skin Palette List (SkinPaletteDropDownButtonItem) --- Displays palettes for the currently selected vector skin.
  
 When you create skin selectors (SkinBarSubItem, SkinDropDownButtonItem, SkinPaletteDropDownButtonItem, SkinRibbonGalleryBarItem, and SkinPaletteRibbonGalleryBarItem) and add them to a toolbar or Ribbon control in code, ensure that you call the skin selector's Initialize method.
            
            
              csharp
              
              
            
          
          SkinBarSubItem skinBarSubItem1 = new SkinBarSubItem();
barManager1.Items.Add(skinBarSubItem1);
bar1.ItemLinks.Add(skinBarSubItem1);
skinBarSubItem1.Initialize();隐藏皮肤和皮肤组
您可以在皮肤选择器中隐藏单个项目,如下所示:
- 创建要排除的外观名称的字符串数组。您可以使用全名(例如"Office 2016 Colorful")或部分名称(例如"2007")。
            
            
              csharp
              
              
            
          
          string[] skinsToHide = { "Seven Classic", "DevExpress Style", "Dark", "2010", "2007", "Sharp" }; - 创建一个遍历皮肤选择器项的自定义方法(HideSkins),并删除与数组中的值匹配的皮肤。
            
            
              csharp
              
              
            
          
          private void HideSkins(string[] skinsToHide) {
    for(var i = 0; i < skinBarSubItem1.ItemLinks.Count; i++) {
        //Check regular button items
        if(skinBarSubItem1.ItemLinks[i] is BarButtonItemLink) {
            var item = skinBarSubItem1.ItemLinks[i];
            foreach(var skin in skinsToHide) {
                if(item.Caption.Contains(skin)) {
                    item.Visible = false;
                }
            }
        }
        //Check buttons nested in the "Bonus Skins" sub-menu
        if(skinBarSubItem1.ItemLinks[i] is BarSubItemLink && skinBarSubItem1.ItemLinks[i].Caption == "Bonus Skins") {
            BarSubItemLink group = (BarSubItemLink)skinBarSubItem1.ItemLinks[i];
            for(var j = 0; j < group.Item.ItemLinks.Count; j++) {
                var item = group.Item.ItemLinks[j];
                foreach(var skin in skinsToHide) {
                    if(item.Caption.Contains(skin)) {
                        item.Visible = false;
                    }
                }
            }
        }
        //Hide theme skins
        if(skinBarSubItem1.ItemLinks[i] is BarSubItemLink && skinBarSubItem1.ItemLinks[i].Caption == "Theme Skins") {
            skinBarSubItem1.ItemLinks[i].Visible = false;
        }
    }
}- 从Load事件处理程序调用HideSkins方法。
            
            
              csharp
              
              
            
          
          void ucBar_Load(object sender, EventArgs e) {
    HideSkins(skinsToHide);
}更改标题和图标
遍历皮肤选择器的ItemLinks集合以更改项目标题或图示符。
            
            
              csharp
              
              
            
          
          void ucBar_Load(object sender, EventArgs e) {
    RenameSkins();
}
private void RenameSkins() {
    for(var i = 0; i < skinBarSubItem1.ItemLinks.Count; i++) {
        if(skinBarSubItem1.ItemLinks[i].Caption == "DevExpress Style") {
            BarButtonItem parentItem = (BarButtonItem)skinBarSubItem1.ItemLinks[i].Item;
            parentItem.Caption = "Default Skin";
            parentItem.ImageUri.Uri = "Apply";
        }
    }
}结果如下图所示:
