关于custom control的custom property
正在编写一个custom control,有3个properties, 分别是backstartcolor, backendcolor, backGradientMode. 用来画出一个色彩渐进的背景。后来想到能否用一个property就代替(应该是修改)以上3个,于是就加了一个Sytle property.
代码如下
public class MyControl
{
public ControlStyle.Style Style
{
get
{
return style;
}
set
{
this.style = value;
ControlStyle.ChangeStyleProperties(this, value);
}
}
}
public class ControlStyle
{
public enum Style
{
Custom,
LightBlue,
XpBlue
}
internal static void ChangeStyleProperties(object sender, Style style)
{
if(sender is ExplorerBar)
{
ExplorerBar explorerBar = (ExplorerBar)sender;
switch(style)
{
case Style.LightBlue:
explorerBar.BackStartColor = Color.FromArgb(195, 218, 249);
explorerBar.BackEndColor = Color.FromArgb(159, 191, 245);
explorerBar.BackGradientMode = LinearGradientMode.Horizontal;
break;
case Style.XpBlue:
explorerBar.BackStartColor = Color.FromArgb(122, 161, 230);
explorerBar.BackEndColor = Color.FromArgb(99, 117, 214);
explorerBar.BackGradientMode = LinearGradientMode.Vertical;
break;
}
}
}
}
=========================================================================
现在的问题是,上面的代码虽然工作,但结构差,添加新的style或维护麻烦,同时在property bar里4个是平行的,而理想的是可扩展的。(Style->backstarkcolor/backendcolor/backGradientMode)不知谁有好的建议,希望指点一二。