我发现这个例子:
<telerik:RadDatePicker
ID="RadDatePicker1"
runat="server">
<DateInput Width="100%"></DateInput>
<Calendar
CellAlign="Center"
CellVAlign="Middle"
DayNameFormat="FirstLetter"
FirstDayOfWeek="Default"
MonthLayout="Layout_7columns_x_6rows"
Orientation="RenderInRows"
TitleAlign="Center"
UseColumnHeadersAsSelectors="False"
ShowRowHeaders="False">
</Calendar>
<DatePopupButton
CssClass="radPopupImage_Default"
BorderColor="#D0E1F2"
BorderStyle="Solid"
BorderWidth="1px" />
我的假设是,RadDatePicker里面有一个DateInput对象,日历对象和DatePopupButton对象。
我想有自己的自定义控制,允许内部对象如访问
<jonno:textbox id="txt1" runat="server"><FieldConfig fieldName="Input1"/></jonno:textbox>
理想情况下,我不希望FieldConfig类是视觉类,但它的确定,如果它是。
我怎样才能做到这一点?
嵌入式的定制标签是你无法控制的属性。 为了能够在标记设置它们,你需要来装饰你的控制和属性具有以下属性:
- 控制:ParseChilden,PersistChildren
- 属性:PersistenceMode
从我使用有类似的功能的控制示例:
/// <summary>
/// Control that will conditionally show one of two views
/// </summary>
[ParseChildren(true)]
[PersistChildren(true)]
public class EditingView : CompositeControl
{
#region private fields
private View _displayView = new View();
private View _editView = new View();
#endregion
#region properties
/// <summary>
/// The view that will be rendered in display mode
/// </summary>
[PersistenceMode(PersistenceMode.InnerProperty)]
public View DisplayView
{
get
{
return _displayView;
}
set
{
_displayView = value;
}
}
/// <summary>
/// The view that will be rendered in editing mode
/// </summary>
[PersistenceMode(PersistenceMode.InnerProperty)]
public View EditView
{
get
{
return _editView;
}
set
{
_editView = value;
}
}
/* Implementation details hidden */
}
看属性了MSDN上对他们究竟读了。 以上应该做你需要它,虽然做的事。 在标记然后我可以简单地分配两种观点:
<ctl:EditingView runat="server">
<DisplayView>
blah blah
</DisplayView>
<EditView>
blah blah edit
</EditView>
</ctl:EditingView>
唯一的区别是,我的性能仍器WebControls,并采取更多的子控件。 这件事虽然shouldn't,只要你设定的属性的权利。
门诺