今天在CSDN中遇到这样一个问题,要求在自定义控件中加入类似于验证控件中的ControlToValidate属性,可以选择页面中的控件的ID."如何让我控件的ControlToValidate 属性也像验证控件一样可以选择页面中可以选的ID"
我从元数据中找到了这样的代码,恍然!
//
// 摘要:
// 获取或设置要验证的输入控件。
//
// 返回结果:
// 要验证的输入控件。默认值为 System.String.Empty,表示未设置此属性。
[IDReferenceProperty]
[TypeConverter(typeof(ValidatedControlConverter))]
[Themeable(false)]
[DefaultValue("")]
public string ControlToValidate { get; set; }
而ValidatedControlConverter又是从ControlIDConverter继承而来的,于是这个自定义控件的属性代码如下:
private string _controlToValidate;
[IDReferenceProperty]
[TypeConverter(typeof(ControlIDConverter))]
[Themeable(false)]
[DefaultValue("")]
public string ControlToValidate
{
get { return _controlToValidate; }
set { _controlToValidate = value; }
}
[TypeConverter(typeof(ControlIDConverter))]这种写法会显示页面中的所有控件,如果只想显示可以验证的标准控件,就要将ControlIDConverter改写为ValidatedControlConverter即可,最终代码如下:
private string _controlToValidate;
[IDReferenceProperty]
[TypeConverter(typeof(ValidatedControlConverter))]
[Themeable(false)]
[DefaultValue("")]
public string ControlToValidate
{
get { return _controlToValidate; }
set { _controlToValidate = value; }
}