【IT168技术文档】
在DevExpress.XtraEditors.XtraForm中,窗体的样式和皮肤有UseDefaultLookAndFeel属性。设置为false,就可以直接再属性里面修改样式和皮肤了。如果设置为true,可以再里面放控件defaultLookAndFeel,设置 defaultLookAndFeel的样式和皮肤,XtraForm窗体的样式和皮肤就可以随着改变。
我试着定义一个XFrmBase窗体,再窗体上房一个控件:defaultLookAndFeel1,定义为Protected。然后其它窗体都从这个窗体上继承。发现再代码的任何一个地方,修改defaultLookAndFeel1的属性,所有窗体的样式和皮肤跟着改变。然后再把皮肤和样式保存在 XML文件中,就实现了所谓的换肤功能。
具体步骤如下:
1. 定义一个XFrmBase窗体,在这个窗体上放defaultLookAndFeel1控件,修改为Protected。在XFrmBase.Designer.cs中,把
这两行注释掉,然后其它所有的窗体都从这个窗体继承。//this.defaultLookAndFeel1.LookAndFeel.SkinName = ...; //this.defaultLookAndFeel1.LookAndFeel.Style = ...;
2. 定义两个XML文件:
StyleXML.xml
<?xml version="1.0" encoding="utf-8"?> <xml> <Style> <StyleValue value="">Flat</StyleValue> <StyleValue value="">UltraFlat</StyleValue> <StyleValue value="IsSelected">Style3D</StyleValue> <StyleValue value="">Office2003</StyleValue> <StyleValue value="">WinXp</StyleValue> <StyleValue value="">Skin</StyleValue> </Style> </xml> SkinXML.xml <?xml version="1.0" encoding="utf-8"?> <xml> <Skin> <SkinValue value="IsSelected">Caramel</SkinValue> <SkinValue value="">Money Twins</SkinValue> <SkinValue value="">Lilian</SkinValue> <SkinValue value="">The Asphalt World</SkinValue> <SkinValue value="">iMaginary</SkinValue> <SkinValue value="">Black</SkinValue> <SkinValue value="">Blue</SkinValue> </Skin> </xml>