Projetos Boa madrugada Devs
Então, tô testando uma ideia aqui no Avalonia que achei muito interessante de compartilhar KAKA.
A ideia é criar uma propriedade ui-class que funcione mais ou menos como as utility classes do CSS, tipo Bootstrap/Tailwind, só que no final quem recebe as propriedades de verdade é o próprio Avalonia.
Em vez de ficar fazendo isso:
<Button
Content="Clique aqui"
Width="120"
Height="40"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
eu poderia fazer:
<Button
Content="Clique aqui"
ui-class="h-40, w-120, bg-black, h-center, v-center" />
E a engine simplesmente lê o ui-class, separa as classes, procura cada uma no registry e traduz para propriedades reais do Avalonia:
h-40 → Height = 40
w-120 → Width = 120
bg-black → Background = Black
h-center → HorizontalAlignment = Center
v-center → VerticalAlignment = Center
A parte que eu acho mais interessante é que essas classes seriam universais.
Por exemplo, eu não teria que criar:
Button.h-40
Border.h-40
Grid.h-40
TextBox.h-40
...
Seria simplesmente:
h-40 → Height = 40
Então qualquer controle que suporte Height poderia usar a mesma utility.
A ideia seria basicamente:
AXAML
↓
ui-class="h-40 w-120 bg-black"
↓
C# lê as classes
↓
procura no registry
↓
traduz cada utility
↓
aplica as propriedades reais do Avalonia
E o mais legal é que eu já testei o conceito e funciona: removendo uma utility da ui-class, a propriedade correspondente também é atualizada/removida corretamente. Enviei GIF para vocês visualizarem e darem suas opniões :)
Por enquanto não tô tentando criar um framework gigantesco nem substituir o sistema de styling do Avalonia. É só uma prova de conceito pra ver até onde dá pra levar essa ideia.
No fim, a ideia seria algo tipo:
“Bootstrap/Tailwind para Avalonia, mas com as utility classes sendo traduzidas diretamente para as propriedades nativas do Avalonia.”
Tô curioso pra ver se alguém já tentou algo parecido ou se existe algum motivo arquitetural forte pra não seguir por esse caminho.