如何以编程方式为模板控件创建默认模板?

问题描述:

我正在创建自定义模板复合控件。如果在标记中没有指定'ItemTemplate',如何以编程方式创建默认模板?如何以编程方式为模板控件创建默认模板?

对,也许我应该在发布我的问题之前玩过一下。我创建了以下类:

internal class ItemTemplateDefault : ITemplate 
{ 
    public void InstantiateIn(Control container) 
    { 
     Literal lit = new Literal(); 

     CountrySelectorItemContainer cont = container as CountrySelectorItemContainer; 

     lit.Text = string.Format("<li>\n\t<a href=\"{0}\" title=\"{1}\">{1}</a>\n</li>", cont.ItemURL, cont.ItemText); 

     container.Controls.Add(lit); 
    } 
} 

所以当如果ItemTemplate中是空的,我实例化一个新ItemTemplateDefault并将其指定为ItemTemplate中。见下文。

if (this.ItemTemplate == null) 
    this.ItemTemplate = new ItemTemplateDefault(); 

CountrySelectorItemContainer container = new CountrySelectorItemContainer(); 
container.ItemText = "My Country"; 
container.ItemURL = "http://myurl.com"; 

this.ItemTemplate.InstantiateIn(container); 

Controls.Add(container); 

这是一个体面的做法吗?我真的只是想到了什么似乎很自然,所以如果您有任何反馈,我将不胜感激。

干杯, James