1、WPFWPF?AvaloniaAvalonia?Dong Binrabbitismdongbinirihi.tech?Avalonia?Avalonia MVP OpenKylin Avalonia SIG?Semi.Avalonia?Ursa.Avalonia?AgendaAgenda WPF?Avalonia?WPF?Avalonia?WPF?Avalonia?Avalonia UI Avalonia UI?Avalonia UI Avalonia UI?.NET.NET?XAML XAML?UI UI?MIT?.NET?XAML?WPF?MVVMAvalonia UI Avalonia
2、UI?AvaloniaAvalonia?AvaloniaAvalonia?WPFWPF?Application CodeAvaloniaSkiaMonoHost OS.NET CLRApplication CodeWPFPresentationCore+PresentationFrameworkMilCoreDirectXWindows.NET CLRWPFWPF?AvaloniaAvalonia?TargetFramework WPF:net6.0-windows Avalonia:net6.0WPFWPF?AvaloniaAvalonia?TargetFramework WPF:net6.
3、0-windows Avalonia:net6.0 Markup?WPF:?Avalonia:Source GeneratorWPFWPF?AvaloniaAvalonia?TargetFramework WPF:net6.0-windows Avalonia:net6.0 Markup?WPF:?Avalonia:Source Generator XAML WPF:BAML Avalonia:ILWPFWPF?AvaloniaAvalonia?TargetFramework WPF:net6.0-windows Avalonia:net6.0 Markup?WPF:?Avalonia:Sou
4、rce Generator XAML WPF:BAML Avalonia:IL?WPF?Avalonia?WPFWPF?AvaloniaAvalonia?TopLevelWPFWPF?AvaloniaAvalonia?TopLevel ClipboardWPFWPF?AvaloniaAvalonia?TopLevel Clipboard MessageBoxWPFWPF?AvaloniaAvalonia?TopLevel Clipboard MessageBox PointerWPFWPF?AvaloniaAvalonia?DependencyObject=AvaloniaObject Dep
5、endencyPropert=AvaloniaPropertyWPFWPF?AvaloniaAvalonia?DependencyObject=AvaloniaObject DependencyPropert=AvaloniaProperty?public static readonly DependencyProperty TestProperty=DependencyProperty.Register(nameof(Test),typeof(bool),typeof(MainWindow),new PropertyMetadata(default(bool);public bool Tes
6、tget return(bool)GetValue(TestProperty);set SetValue(TestProperty,value);public static readonly StyledProperty TestProperty=AvaloniaProperty.Register(Test);public bool Testget=GetValue(TestProperty);set=SetValue(TestProperty,value);WPFWPF?AvaloniaAvalonia?DependencyObject=AvaloniaObject DependencyPr