如何在Ext.Net(ext.net的.net包装器)中设置自定义(甚至非自定义)控件属性的初始值?
目前我正在做以下事情:
public class CpfField : Ext.Net.TextField {
public CpfField() {
this.SelectOnFocus = true;
this.AllowBlank = false;
this.MaxLength = 14;
this.FieldLabel = "CPF";
this.LabelAlign = Ext.Net.LabelAlign.Top;
this.Plugins.Add(new CpfInputMask());
}
}
正如您所看到的,我正在使用构造函数来设置默认值,我没有覆盖控件的任何行为。到现在为止还挺好。它按预期工作,但我在我继承的每个控件上都设置了this.LabelAlign = Ext.Net.LabelAlign.Top
。
这闻起来违反了DRY
原则。有没有办法在全局范围内设置此(和其他属性)?
答案 0 :(得分:0)
你在这里做的很好,虽然我注意到了一些问题。
您可以调查的另一个“全局”选项是使用.skin文件。下面的示例通过“全局”设置所有TextField组件的属性来演示此选项。
以下示例演示了几个选项,包括在对象的OnInit事件中设置属性。
示例(.skin)
<%@ Register assembly="Ext.Net" namespace="Ext.Net" tagprefix="ext" %>
<ext:TextField runat="server" Icon="Accept" />
示例(.aspx)
<%@ Page Language="C#" Theme="Skin1" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
var form = new FormPanel
{
Height = 215,
Width = 350,
Title = "Example",
Padding = 5,
DefaultAnchor = "100%",
Items = {
new MyField
{
FieldLabel = "My Field"
},
new AnotherField
{
FieldLabel = "Another Field"
},
new TextField
{
FieldLabel = "A TextField"
}
}
};
this.Form.Controls.Add(form);
}
public class MyField : TextField
{
public MyField()
{
this.SelectOnFocus = true;
this.AllowBlank = false;
this.MaxLength = 14;
}
}
public class AnotherField : TextField
{
protected override void OnInit(EventArgs e)
{
this.SelectOnFocus = true;
this.AllowBlank = false;
this.MaxLength = 14;
base.OnInit(e);
}
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Ext.NET Example</title>
</head>
<body>
<form runat="server">
<ext:ResourceManager runat="server" />
</form>
</body>
</html>
希望这有帮助。