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

发布于 2024-09-03 11:53:58 字数 62 浏览 6 评论 0原文

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

I'm creating a custom templated composite control. If there is no 'ItemTemplate' specified in the mark-up, how do I create a default template programmatically?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

总以为 2024-09-10 11:53:58

是的,也许我应该在发布问题之前先尝试一下。我创建了以下类:

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 为 null 时,我会实例化一个新的 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);

这是这样做的好方法吗?我真的只是想到了看起来很自然的东西,所以如果您有任何反馈,我将不胜感激。

干杯,
詹姆斯

Right, maybe I should have played around with it a bit before posting my question. I've created the following class:

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);
    }
}

So when if the ItemTemplate is null, I instantiate a new ItemTemplateDefault and assign it as ItemTemplate. See below.

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);

Is this a decent way of doing this? I really just thought up what seemed natural, so I would appreciate it if you have any feedback.

Cheers,
James

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文