Lanzamiento del kit de herramientas multiplataforma .NET UI AvaloniaUI 0.8

La pr贸xima versi贸n beta de AvaloniaUI .



El lanzamiento incluye una gran cantidad de correcciones de errores, optimizaciones de rendimiento y una serie de nuevas caracter铆sticas. Puedes descubrir qu茅 hay de nuevo debajo del corte.


Backend X11 para Linux


Anteriormente, utilizamos GTK2 y luego GTK3 para dibujar ventanas en Linux. Desafortunadamente, GTK tuvo m谩s problemas que beneficios, y la salida de gr谩ficos generalmente tuvo que hacerse a trav茅s de XPutImage desde una conexi贸n separada al servidor X.
En el 2011 , se implement贸 un backend que trabaja directamente con libX11, que, adem谩s de corregir una serie de errores y simplificar ventanas, permiti贸 implementar el soporte para DPI por monitor , que, por razones ideol贸gicas, GTK para X11 no funciona es idealmente superior (est谩 en Qt para X11).


Los cuadros de di谩logo de archivos todav铆a dependen de GTK3, pero el trabajo con ellos est谩 organizado de tal manera que en el futuro ser谩 posible usar los mismos cuadros de di谩logo de Qt y a trav茅s de las API del portal .


AvaloniaResource


Anteriormente, utilizamos EmbeddedResource para los recursos, lo que condujo a los nombres de recursos de la forma `resm: YourAssembly.Dir1.Dir2.file.xaml". Ahora hemos implementado una tarea MSBuild que le permite referirse a los recursos por Url normal como en WPF / UWP, tambi茅n las rutas relativas relativas al archivo XAML actual, por ejemplo:


<!--    --> <Image Source="../file.jpg"/> <!--  /root/dir    --> <Image Source="/root/dir/file.jpg"/> <!--  /root/dir  "Assembly.Name" --> <Image Source="avares://Assembly.Name/root/dir/file.jpg"/> 

Para migrar proyectos antiguos, debe reemplazar EmbeddedResource con AvaloniaResource , por ejemplo:


 <AvaloniaResource Include="**\*.xaml"> <SubType>Designer</SubType> </AvaloniaResource> <AvaloniaResource Include="Assets\*"/> 

Para asociar el marcado XAML con el c贸digo subyacente, el nombre del recurso en EmbeddedResource se asign贸 previamente con el espacio de nombres y el nombre de la clase, lo que caus贸 una serie de inconvenientes cuando la ubicaci贸n del archivo de marcado no coincid铆a con el espacio de nombres y el espacio de nombres de la clase. Ahora se utiliza el atributo x:Class para esto, como en todos los marcos XAML de personas sanas:


 <UserControl xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="MyApplication.MyUserControl"> 


Tema oscuro


# 2078 agreg贸 una caracter铆stica que todos han estado esperando durante tanto tiempo, un tema oscuro.



Nota: las pesta帽as de la izquierda NO est谩n estilizadas por el tema y no est谩n incluidas en 茅l.


Mejores opciones espec铆ficas de plataforma


Se ha refactorizado la configuraci贸n de las opciones espec铆ficas de la plataforma. Anteriormente, tuve que escribir un calzado tan terrible:


 public static AppBuilder BuildAvaloniaApp() { var builder = AppBuilder.Configure<App>(); if(RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) builder.UseX11(new X11PlatformOptions() {UseGpu = false}); else if(RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) builder.UseAvaloniaNative(anopts => { anopts.UseGpu = false; anopts.MacOptions.ShowInDock = 0; }); else if(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) builder.UseWin32(false, true); return builder; } 

Ahora todo es breve y hermoso


 public static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure<App>() .UsePlatformDetect() .With(new X11PlatformOptions { UseGpu = false }) .With(new AvaloniaNativePlatformOptions { UseGpu = false }) .With(new MacOSPlatformOptions { ShowInDock = false }) .With(new Win32PlatformOptions { UseDeferredRendering = false }); 

Vista previa del complemento actualizado para Visual Studio


La vista previa se ha reescrito para usar la transferencia de im谩genes a trav茅s de TCP. Anteriormente, ten铆amos un conjunto de muletas con la creaci贸n de una ventana fuera de la pantalla y empuj谩ndola al estudio a trav茅s de user32! SetParent. El problema con este enfoque era que no siempre funcionaba, y cuando funcionaba, no siempre era como deber铆a. Ahora la vista previa se comporta mucho m谩s estable.


Tambi茅n en el complemento actualizado se introdujeron mejoras de inteligencia


Viewbox


En # 2066 , ViewBox un control solicitado con frecuencia de WPF y UWP: ViewBox .


DropDown renombr贸 ComboBox


A pesar de que todav铆a es un men煤 desplegable, no un cuadro combinado, cambiamos el nombre para que sea como todos los dem谩s (WPF / UWP). El nombre anterior todav铆a est谩 disponible, pero se eliminar谩 en un par de versiones.


DataGrid


DataGrid ahora se considera condicionalmente listo para usar (bueno, simplemente porque ya se usa activamente), se transfiere al repositorio principal y se publica en el paquete Avalonia.Controls.DataGrid .


Para usar, debe llamar a UseDataGrid cuando configure la aplicaci贸n:


 public static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure<App>() .UsePlatformDetect() .UseDataGrid(); 

y registre su tema predeterminado en App.xaml :


 <Application.Styles> <StyleInclude Source="avares://Avalonia.Themes.Default/DefaultTheme.xaml"/> <StyleInclude Source="avares://Avalonia.Themes.Default/Accents/BaseLight.xaml"/> <StyleInclude Source="resm:Avalonia.Controls.DataGrid.Themes.Default.xaml?assembly=Avalonia.Controls.DataGrid"/> </Application.Styles> 

Multiselecci贸n en TreeView


En # 2347 , se ha agregado una selecci贸n m煤ltiple a TreeView. Fue el a帽o 2019.


Soporte reactivo de interfaz de usuario mejorado


Se agreg贸 un control en # 2294
RoutedViewHost .


API de fuentes del sistema


Ahora puede obtener una lista de todas las API disponibles en el sistema. El a帽o 2019 continu贸.


Muchos errores corregidos


Puede encontrar una lista de (casi) todos los cambios aqu铆 .


Rompiendo cambios


Dado que tenemos 0 n煤mero de versi贸n principal, seg煤n SemVer podemos hacer cambios importantes en lanzamientos menores. Y los hacemos todos iguales, por eso sigue siendo "beta". Puede encontrar una lista de informaci贸n de migraci贸n aqu铆 .


C贸mo comenzar a usar


La forma m谩s f谩cil es instalar la extensi贸n para Visual Studio y usar las plantillas suministradas con ella, o usar las plantillas para dotnet new . Se pueden ver ejemplos de trabajo con herramientas
aqui


Por el momento, tradicionalmente podemos decir sobre la documentaci贸n, tenemos algo como en WPF, lo que no se describe en WPF en el sitio , pero si sucedi贸 algo completamente incomprensible, llama a Gitter-chat /


驴Alguien usa esto?


No diremos para todos, diremos para aquellos que nos contaron sobre s铆 mismos en los chats:


Versi贸n multiplataforma de ILSpy


WasabiWallet : billetera Bitcoin compatible con ZeroLink


PokemonBattleEngine - un simulador de batallas de Pok茅mon



egram.tel - Cliente de Telegram


SparkSDR - Radio definida por software para estaciones de radio amateur (?).



RoslynPad es un an谩logo de c贸digo abierto de LinqPad.


Core2D - editor de gr谩ficos


AvalonStudio - IDE para desarrollo integrado


Bueno, para el desarrollo en C # con Avalonia:


Para reponer esta lista en tu poder.

Source: https://habr.com/ru/post/447152/


All Articles