我一直在尝试创建一种特殊的字段集。哪种奇妙的东西,但主要是崩溃和维持状态。此外,fieldset的两个部分(在图例中,在其余部分中)必须可用于后面的代码(声明性地)。
使用页面或控件中的代码应如下所示:
<myTagPrefix:Fieldset>
<myTagPrefix:Legend>[controls here should be available in codebehind]</myTagPrefix:Legend>
<myTagPrefix:Content>[controls here should be available in codebehind]</myTagPrefix:Content>
</myTagPrefix:Fieldset>
或者
<myTagPrefix:Fieldset>
<Legend>[controls here should be available in codebehind]</Legend>
<Content>[controls here should be available in codebehind]</Content>
</myTagPrefix:Fieldset>
哪个会产生或多或少的以下HTML(不包括魔法折叠和状态维护代码):
<fieldset>
<legend>[result of rendered legend controls]</legend>
[result of rendered legend controls]
</fieldset>
我查看了一个模板化控件,通过标记为“TemplateContainer”的属性公开模板容器,这很好用,除了后面的代码不能再访问模板中的控件这一事实。
我也调查了inheriting a container control面板,并覆盖了开始和结束标记的渲染方法,这也很好,除了它只能包含一个控件集合,而这个字段集控件应该有两个(图例中的控件和其余字段集中的控件)。这可以通过将图例文本作为字段集的属性公开来克服,但为了使事情变得复杂,文本不是唯一要在图例中显示的内容。 (例如:图像和按钮也可以显示)。
当然,我可以更抽象地看到这个问题,我基本上要求一个带有多个子控件集合的容器控件。
当我试图找出与之比较的内容时,功能接近于MultiView; MultiView只能包含“View”类型的控件,并且代码控制可以在代码隐藏中使用。 MultiView不限制其子控件的数量和唯一性这一事实,我的控制应该是(我最多可以使用一个图例和一个内容元素)...现在;)
有没有人知道如何构建MultiView?有一个我忽略的技巧吗?任何帮助或建议将不胜感激。