首页 > 其他分享 >Avalonia TemplatedControl (模板控件)

Avalonia TemplatedControl (模板控件)

时间:2024-01-19 20:12:30浏览次数:25  
标签:控件 btnSearch OnSearchEvent value TemplatedControl public 模板 Avalonia

在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}" />

标签:控件,btnSearch,OnSearchEvent,value,TemplatedControl,public,模板,Avalonia
From: https://www.cnblogs.com/trykle/p/17975488

相关文章

  • Avalonia UserControl
    ava中的用户控件和wpf中的作用一致一般用来制作页面新建一个页面<UserControl...><StackPanelHorizontalAlignment="Center"VerticalAlignment="Center"><TextBlockText="这是一个用户控件"/><ButtonName="btn1&qu......
  • 布局控件:Grid和StackPanel
    布局控件:Grid和StackPanel本文同时为b站WPF课程的笔记,相关示例代码一个窗口顶上的部分叫做非客户区,下面的部分叫做客户区域。非客户区域主要就是一个Title和三个窗口样式按钮。我们主要学习修改客户区域。Grid直接在<Window>标签下当然也是可以直接写元素的,但是只能写一个。......
  • 布局控件:Grid和StackPanel
    布局控件:Grid和StackPanel本文同时为b站WPF课程的笔记,相关示例代码一个窗口顶上的部分叫做非客户区,下面的部分叫做客户区域。非客户区域主要就是一个Title和三个窗口样式按钮。我们主要学习修改客户区域。Grid直接在<Window>标签下当然也是可以直接写元素的,但是只能写一个。......
  • MFC 自定义控件添加 tip
    一、要求1.自定义tip提示并实时提示,跟随鼠标移动2.避免重复刷导致tip闪烁3.picture控件添加自定义变量二、tip涉及2.1CMFCToolTipCtrl、CMFCToolTipInfoCMFCToolTipCtrl*m_ptooltip;//注册控件、传递提示消息CMFCToolTipInfo*m_ttinfo;//样式处理......
  • DevExpress Web Report Designer中文教程 - 如何自定义控件和表达式注册?
    获取DevExpressv23.2正式版下载DevExpress技术交流群9:909157416      欢迎一起进群讨论自定义控件集成DevExpress Reports中的自定义报表控件注册变得更加容易,为了满足web开发人员的需求,DevExpressv23.1+包括简化的自定义控件注册支持(在服务器级别实现)。如果您的解决......
  • 一起学习Avalonia
    一起学习Avalonia(一)一起学习Avalonia(二)一起学习Avalonia(三)一起学习Avalonia(四)一起学习Avalonia补充(Linux下的使用开发)一起学习Avalonia(五)一起学习Avalonia补充(deepin下的使用开发t调试)一起学习Avalonia(六)一起学习Avalonia(七)一起学习Avalonia(八)一起学习Avalonia(......
  • Avalonia 11 学习笔记
    Avalonia学习之样式Avalonia学习之样式的选择器和伪类Avalonia学习之资源使用Avalonia学习之绑定Avalonia学习之属性Avalonia学习之自定义控件Avalonia实现一条虚线Avalonia使用d:DataContext实现设计时预览Avalonia实现滑动加载Avalonia通过ef操作sqlite......
  • 【愚公系列】2024年01月 WPF控件专题 ProgressBar控件详解
    ......
  • 【愚公系列】2024年01月 WPF控件专题 Slider控件详解
    ......
  • VB6的OfficeMenu控件 - 开源研究系列文章
          这次将原来VB6中喜欢和使用到的OfficeMenu的控件做一个使用介绍。      上次介绍了VB6中的控件引擎,但是那个只针对基本的控件,这个OfficeMenu控件在当时是收费的,笔者找度娘好不容易才下载到一个免费版本,而且使用起来也非常的方便,在当时那个年代是笔者对于VB6......