OrangeUI

当ListBox中需要两种不同样式的列表项时,我们可以让ListBox使用多设计面板来实现。
如下图所示:
第一个列表项,用于展示账号信息,
下面几个列表项,是功能菜单,

 
 
先准备一个ListBox,
ListBox.Properties.ItemHeight设置为48,表示默认列表项的高度为48,
双击ListBox,添加如下列表项,

Item.Caption        Item.Detail         Item.ItemType       Item.Height
Viva                讯客号:happy520    sitHeader          80
sitSpace           20
相册                                   sitDefault         -1
收藏                                   sitDefault         -1
钱包                                   sitDefault         -1
sitSpace           20
钱包                                   sitDefault         -1
sitSpace           20
设置                                   sitDefault         -1
效果如下:

给第一个列表项viva设置图标Item.Icon为
再给相册、收藏、钱包、表情、设置这5个菜单项设置如下图标

效果如下:

 
再拖一个ItemDesignerPanel到ListBox上面,命名为idpHeader,
设置ListBox.Properties.HeaderDesignerPanel为idpHeader,

表示当Item.ItemType为sitHeader时,此Item使用idpHeader的样式,
接下来再在idpHeader上放一个Image,取名为imgHead,用于显示Item.Icon,
放一个Label,取名为lblNickName,用于显示Item.Caption,
再放一个Label,取名为lblAccount,用于显示Item.Detail,
效果如下:

接下来设置idpHeader的绑定,
imgHead用来显示Item.Icon,
所以把idpHeader.Properties.ItemIconBindingControl设置为imgHead,
lblNickName用来显示Item.Caption,
所以把idpHeader.Properties.ItemCaptionBindingControl设置为lblNickName,
lblAccount用来显示Item.Detail,
所以把idpHeader.Properties.ItemDetailBindingControl设置为lblAccount,

再把idpHeader的背景色设置为白色,
设置idpHeader.SelfOwnMaterial.IsTransparent为False,
idpHeader.SelfOwnMaterial.BackColor.IsFill为True,
idpHeader.SelfOwnMaterial.BackColor.FillColor.Color设置为White,
 
效果如下:

 
接下去再拖一个ItemDesignerPanel,取名为idpMenu,用于设计菜单项的显示样式,
把ListBox.Properties.ItemDesignerPanel设置为idpMenu,

当Item.ItemType为sitDefault时,使用ListBox.Properties.ItemDesignerPanel为绘制,
在idpMenu上放一个Image,取名为imgMenuIcon,用于显示Item.Icon,
再放一个Label,取名为lblMenuCaption,用于显示Item.Caption,
效果如下:

设置idpMenu的绑定,
imgMenuIcon用来显示Item.Icon,
所以把idpMenu.Properties.ItemIconBindingControl设置为imgMenuIcon,
lblMenuCaption用来显示Item.Caption,
所以把idpHeader.Properties.ItemCaptionBindingControl设置为lblMenuCaption,

再把idpMenu的背景色设置为白色,
设置idpMenu.SelfOwnMaterial.IsTransparent为False,
idpMenu.SelfOwnMaterial.BackColor.IsFill为True,
idpMenu.SelfOwnMaterial.BackColor.FillColor.Color设置为White,
 
效果如下:

再设置ListBox的背景色为#FFEDEDED
设置ListBox.SelfOwnMaterial.IsTransparent为False,
ListBox.SelfOwnMaterial.BackColor.IsFill为True,
ListBox.SelfOwnMaterial.BackColor.FillColor.Color设置为# FFEDEDED,
还需要添加分隔线,
设置ListBox.SelfOwnMaterial.DrawItemDevideParam.IsFill为Ture,
效果如下: