Avalonia TemplatedControl (模板控件)

news/发布时间2024/7/26 15:41:38

在ava中的模板控件相当于wpf中的自定义控件

在下面示例中,将绘制一个文本框和一个按钮,用来组合一个搜索控件

在app.axaml中加入样式

<Application.Styles><FluentTheme /><StyleInclude Source="/TemplatedControl1.axaml" />
</Application.Styles>

引入并使用

 xmlns:local="using:AvaloniaApplication2"<local:TemplatedControl1 /> 

为控件定义搜索文字属性

public static readonly StyledProperty<string> SearchTextProperty =AvaloniaProperty.Register<TemplatedControl1, string>(nameof(SearchText), defaultValue: "");public string SearchText
{get => GetValue(SearchTextProperty);set => SetValue(SearchTextProperty, value);
}

在前台使用

<local:TemplatedControl1 SearchText="百度一下" />

毫无效果,在样式中将他们关联

查看效果

为控件定义搜索事件
在模板中为按钮添加名字

private Button btnSearch;
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
{base.OnApplyTemplate(e);//根据模板内的名字找到控件btnSearch = e.NameScope.Find<Button>("btnSearch");btnSearch.Click += (s, e) =>{//在内部按钮的事件中,执行外部注册的 OnSearch 事件RoutedEventArgs args = new RoutedEventArgs(OnSearchEvent);RaiseEvent(args);};
} public static readonly RoutedEvent<RoutedEventArgs> OnSearchEvent =RoutedEvent.Register<TemplatedControl1, RoutedEventArgs>(nameof(OnsSearch), RoutingStrategies.Direct);public event EventHandler<RoutedEventArgs> OnsSearch
{add => AddHandler(OnSearchEvent, value);remove => RemoveHandler(OnSearchEvent, value);
}

这样即可在外部注册事件
在模板中,定义双向绑定,使文本框输入后属性也更新值

 <TextBox Width="120" Text="{TemplateBinding SearchText, Mode=TwoWay}" />

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.jwkm.cn/p/22181803.html

如若内容造成侵权/违法违规/事实不符,请联系宁远站长网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

centOS7安装GLPI 和fusioninventory插件

centOS7安装GLPI, 一、关闭防火墙(不关闭只能本机访问): systemctl stop firewalld.service #停止firewalld服务systemctl disable firewalld.service #设置开机默认不启动 #生产环境单独在防火墙上开启端口和策略# firewall-cmd --permanent --zone=public --add-port=80/…

SafeTpack—基于AURIX 2G的功能安全目标解决方案

SafeTpack是专门针对于英飞凌AURIX 2G系列芯片的功能安全解决方案,由英飞凌下属子公司Hitex按照ISO26262-10作为独立于环境的安全要素(SEOOC)研发。根据ISO26262-5中的要求,系统需要根据不同ASIL等级的要求,针对不同比例的单点故障(SPF)和潜在故障(LF)进行检测,并采取…

N皇后与数独,回溯的较难应用

还是之前回溯的模板,只不过添加元素是要加一个判断函数。 它的递归层数可以看成是它行数,因此行数达到n时,这就是递归终止条件。 这里我用的时visited数组来表示,某一行某一列不能取。 完整代码:点击查看代码 class Solution { public: vector<pair<int,int>>…

5分钟教会你如何在生产环境debug代码

前言 有时出现的线上bug在测试环境死活都不能复现,靠review代码猜测bug出现的原因,然后盲改代码直接在线上测试明显不靠谱。这时我们就需要在生产环境中debug代码,快速找到bug的原因,然后将锅丢出去。生产环境的代码一般都是关闭source map和经过混淆的,那么如何进行debug…

SQL SERVER 快捷键

1、快捷键:书签:清除所有书签。 CTRL-SHIFT-F2 书签:插入或删除书签(切换)。 CTRL+F2 书签:移动到下一个书签。 F2 功能键 书签:移动到上一个书签。 SHIFT+F2 取消查询。 ALT+BREAK 连接:连接。 CTRL+O 连接:断开连接。 CTRL+F4 连接:断开连接并关闭子窗口。 CTRL+F4数…

流程表单设计器可以用在什么行业?

流程表单设计器可以应用拖拉拽等方式适各种应用场景的创建,数据资源利用率提升,办公效率也获得较大提高。当前,应用什么样的办公利器可以助力企业实现高效率的流程化办公?低代码技术平台是目前较为流行、并且深得广大用户喜爱的软件平台产品,其中,流程表单设计器可以应用…