添加和自定义工具栏皮肤选择器
您可以在工具栏(BarManager)和Ribbon Control中添加皮肤选择器,并允许用户在运行时选择皮肤。
将皮肤选择器添加到工具栏
在设计时,单击工具栏中的Add按钮,并从skin Item子菜单中选择一个皮肤选择器。
可以使用以下皮肤选择器:
Skin Menu (SkinBarSubItem)—— 将外观名称显示为菜单。
Skin List (SkinDropDownButtonItem)————将皮肤名称显示为可滚动列表,并带有内置搜索框,可按名称查找皮肤。
Skin Palette List (SkinPaletteDropDownButtonItem)—— 显示当前选定的矢量皮肤的调色板。
您可以在代码中修改皮肤选择器。为此请使用外观选择器的s集合。
当您创建外观选择器(SkinBarSubItem、SkinDropDownButtonItem、SkinPaletteDropDownButtonItem、SkinRibbonGalleryBarItem和SkinPaletteRibbonGalleryBarItem)并将其添加到代码中的工具栏或功能区控件时,请确保调用外观选择器的Initialize方法。
C#:
SkinBarSubItem skinBarSubItem1 = new SkinBarSubItem(); barManager1.Items.Add(skinBarSubItem1); bar1.ItemLinks.Add(skinBarSubItem1); skinBarSubItem1.Initialize();
VB.NET:
Dim skinBarSubItem1 As New SkinBarSubItem() BarManager1.Items.Add(skinBarSubItem1) Bar1.ItemLinks.Add(skinBarSubItem1) skinBarSubItem1.Initialize()
隐藏皮肤和皮肤组
您可以隐藏皮肤选择器中的单个项目,如下所示:
1.创建要排除的皮肤名称的字符串数组,您可以使用完整名称(例如“Office 2016 Colorful”)或部分名称(例如“2007”)。
C#:
string[] skinsToHide = { "Seven Classic", "DevExpress Style", "Dark", "2010", "2007", "Sharp" };
VB.NET:
Dim skinsToHide() As String = { "Seven Classic", "DevExpress Style", "Dark", "2010", "2007", "Sharp" }
2.创建一个自定义方法 ( HideSkins ),用于迭代皮肤选择器的项目,并删除与数组中的值匹配的皮肤。
C#:
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; } } }
VB.NET:
Private Sub HideSkins(ByVal skinsToHide() As String) For i = 0 To skinBarSubItem1.ItemLinks.Count - 1 'Check Items If TypeOf skinBarSubItem1.ItemLinks(i) Is BarButtonItemLink Then Dim item = skinBarSubItem1.ItemLinks(i) For Each skin In skinsToHide If item.Caption.Contains(skin) Then item.Visible = False End If Next skin End If 'Check bonus skins If TypeOf skinBarSubItem1.ItemLinks(i) Is BarSubItemLink AndAlso skinBarSubItem1.ItemLinks(i).Caption <> "Theme Skins" Then Dim group As BarSubItemLink = CType(skinBarSubItem1.ItemLinks(i), BarSubItemLink) For j = 0 To group.Item.ItemLinks.Count - 1 Dim item = group.Item.ItemLinks(j) For Each skin In skinsToHide If item.Caption.Contains(skin) Then item.Visible = False End If Next skin Next j End If 'Hide theme skins If TypeOf skinBarSubItem1.ItemLinks(i) Is BarSubItemLink AndAlso skinBarSubItem1.ItemLinks(i).Caption = "Theme Skins" Then skinBarSubItem1.ItemLinks(i).Visible = False End If Next i End Sub
3.从Load事件处理程序调用HideSkins方法。
C#:
void ucBar_Load(object sender, EventArgs e) { HideSkins(skinsToHide); }
VB.NET:
Private Sub ucBar_Load(ByVal sender As Object, ByVal e As EventArgs) HideSkins(skinsToHide) End Sub
更改标题和图标
用迭代皮肤选择器的ItemLinks集合来更改项目标题或字形。
C#:
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"; } } }
VB.NET:
Private Sub ucBar_Load(ByVal sender As Object, ByVal e As EventArgs) RenameSkins() End Sub Private Sub RenameSkins() For i = 0 To skinBarSubItem1.ItemLinks.Count - 1 If skinBarSubItem1.ItemLinks(i).Caption = "DevExpress Style" Then Dim parentItem As BarButtonItem = CType(skinBarSubItem1.ItemLinks(i).Item, BarButtonItem) parentItem.Caption = "Default Skin" parentItem.ImageUri.Uri = "Apply" End If Next i End Sub
下图显示了结果:
使用定位器更改皮肤标题
您还可以使用Localizer对象来重命名外观项目。