Avalonia UI中如何实现WPF的DefaultStyleKeyProperty.OverrideMetadata等效功能?
Avalonia UI 自定义控件默认样式键的对应实现
你在WPF中使用的这段代码作用是为自定义控件指定默认样式的查找键,让框架能够自动匹配对应类型的默认主题样式:
DefaultStyleKeyProperty.OverrideMetadata(typeof(MediaPlayer), new StyledPropertyMetadata(typeof(MediaPlayer)));
在Avalonia UI中有两种等价实现方式:
- 手动编写元数据重写逻辑
和WPF的写法逻辑基本一致,只需在自定义控件的静态构造函数中添加对应代码即可:
using Avalonia; using Avalonia.Styling; using Avalonia.Controls; public class MediaPlayer : Control { static MediaPlayer() { DefaultStyleKeyProperty.OverrideMetadata( typeof(MediaPlayer), new StyledPropertyMetadata(typeof(MediaPlayer)) ); } // 此处编写控件的其他业务逻辑 }
- 源生成器自动生成(推荐)
如果启用了Avalonia官方源生成器,只需为控件类添加[CustomControl]特性,并将类声明为分部类,源生成器会自动生成上述重写代码,无需手动编写:
using Avalonia.Controls; using Avalonia.Metadata; [CustomControl] public partial class MediaPlayer : Control { // 此处编写控件的其他业务逻辑 }
内容的提问来源于stack exchange,提问作者Etienne Charland
相关产品推荐
相关产品推荐

