我似乎无法找到有关如何使用多个实例实现ITemplates的任何示例。我需要做的就是构建一个导航,其中包含每个导航项目内容的模板。
答案 0 :(得分:2)
如果您的控件不是数据绑定控件,则可以通过以下方式解决问题。但是,我还没有测试过它。
public class FooItem : WebControl, INamingContainer
{
protected override CreateChildControls()
{
Control placeHolder = this.FindControl(((Foo)this.Parent).ItemPlaceHolderId);
if (placeHolder != null)
{
// Add some controls to the placeHolder.
}
}
}
public class Foo : WebControl, INamingContainer
{
public ITemplate ItemTemplate { get; set; }
public string ItemPlaceHolderId
{
get { ... }
set { ... }
}
public FooItemCollection Items
{
get { ... }
}
protected override CreateChildControls()
{
foreach (FooItem item in this.Items)
{
this.ItemTemplate.InstantiateIn(item);
}
}
}
答案 1 :(得分:1)
查看创建数据绑定模板化控件的文档。
不幸的是,我发现的最好的文档来自.NET 1.1: Developing a Templated Data-Bound Control
来自MSDN的说明:
此TemplateInstanceAttribute类 是可选的。如果是模板属性 没有扩展 TemplateInstanceAttribute类, 默认值,Multiple字段,是 使用
因此,不使用ITemplate
的任何TemplateInstanceAttribute
示例都使用TemplateInstance.Multiple
。