Avalonia开发实践(五)——如何用后台代码创建模板

在自定义TemplatedControl时,有时并不想借助资源文件来搭建控件的模板。比如一个容器型控件,它的模板可能只有一个ContentPresenter,其他的相关逻辑都是在后台代码中实现的。

根据上述场景,我们不妨回顾下WPF中是如何实现的...

在WPF中,有FrameworkElementFactory这么个东西,借助它可以在后台代码中进行VisualTree的搭建。如下代码示例便是创建了一个根元素为Border的模板:

var factory = new FrameworkElementFactory();
factory.Type = typeof(Border);
factory.Name = "PART_RootBorder";
this.Template = new ControlTemplate()
{
    VisualTree = factory
};

而Avalonia中,没有这个工具,所以这个思路行不通!

通过阅读官方文档,笔者只找到了关于代码生成数据模板的示例。

var template = new FuncDataTemplate<Student>((value, namescope) =>
    new TextBlock
    {
        [!TextBlock.TextProperty] = new Binding("FirstName"),
    });

原文链接

故而先尝试用FuncContr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值