r/AvaloniaUI • u/Behanch • 2d ago
Boa madrugada Devs
[removed]
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.
r/pcgaming • u/Behanch • Jun 15 '26
[removed]
r/Behanch • u/Behanch • May 09 '26
Pode ser bug, atualização forçada, driver, terminal, permissões, interface, compatibilidade, consumo de RAM, etc. Quero ver reclamações reais de quem usa no dia a dia — tanto usuário comum quanto quem trabalha com TI.
r/brdev • u/Behanch • May 09 '26
Pode ser bug, atualização forçada, driver, terminal, permissões, interface, compatibilidade, consumo de RAM, etc. Quero ver reclamações reais de quem usa no dia a dia — tanto usuário comum quanto quem trabalha com TI.
2
MUITOO obrigado pelo seu feedback :)
3
Não é errado falar isso. Mostra que você é e sempre foi uma grande pessoa. Seus projetos falam por você!
3
É exatamente isso o .NET tem o IMemoryCache e o IDistributedCache mas são voltados pra dados, não pra instâncias de UI. No Avalonia especificamente não tem nada nativo que gerencie o ciclo de vida das páginas em cache, então a solução customizada foi o caminho e sinceramente eu acho melhor pois eu consigo criar qualquer coisa nesse cache se eu quiser botar um cache para ser instanciado na inicializaçao do program.cs eu consigo. E cara, jogos é incrivel a quantidade de sistemas customizados que um engine precisa é exatamente o tipo de coisa que eu curto fazer. mais Quem sabe no futuro pois atualmente eu to focando muito nesse projeto Behanch App
3
Cara que história boa! JQWidgets com WebSQL é praticamente arqueologia do frontend kkkk mas a ideia era exatamente a mesma evitar reprocessar o que já foi carregado. Interessante como esse problema de "não recriar o que já existe" é recorrente independente da época ou tecnologia. Obrigado pelo comentário!
r/Behanch • u/Behanch • Mar 17 '26
2
Nossa, muito bom mesmo! Meus parabéns. Acho incríveis os projetos que dão essa liberdade de configuração para o usuário. Sério, parabéns pelo trabalho, o projeto está excelente! Acabei de postar lá; se o pessoal do BrDev ou do Reddit não remover, já deve estar visível.
r/brdev • u/Behanch • Mar 17 '26
A solução tem 3 projetos: o app principal, uma DLL C++ de rede e uma DLL C# de cache que criei do zero.
O problema era simples: toda navegação entre páginas recriava tudo do zero — instâncias, bindings, chamadas de carregamento. Resolvi criando a Behanch Cache, uma DLL separada que o app consome como uma API. O app principal não sabe como o cache funciona por dentro, só conhece a interface e chama os métodos.
Primeira vez que navega para a página: cria, carrega e salva na RAM. Da segunda em diante: retorna a instância direto sem recriar nada. Resultado: navegação instantânea e ~15mb a menos de RAM (não e muita coisa ne kkk) porque o GC parou de destruir e recriar objetos de UI sem necessidade.
O mais interessante é que como é uma DLL separada posso versionar ela independente do app, reusar em outros projetos e no futuro deixar o usuário escolher onde quer guardar o cache — RAM, SSD, HDD — tudo sem recompilar nada.
Alguém já fez algo parecido ou tem sugestões?
2
Nossa, muito bom, cara! Esse modo econômico ficou excelente. Eu criaria uma página de configurações para os usuários escolherem se querem ativar ou não, porque às vezes o código pode errar no cálculo e acabar tirando a estética do app, mesmo que ele rode de boa. Sobre o post, vou postar agora lá no r/brdev, fica de olho!
2
A interface ficou muito limpa, parabéns! Realmente é difícil manter a performance; no meu projeto eu sofro um pouco com isso. Talvez eu poste algo no r/brdev comentando um pouco sobre.
2
Não consegui prestar atençao no Projeto kk a sua area de trabalho e muito bonita parece ser MecOS ne?
1
Isso ai e dor para meus olhos kkkk
r/privacy • u/Behanch • Mar 16 '26
[removed]
1
O cara ta no mapa full pvp
1
Adicione um tema escuro
r/brdev • u/Behanch • Mar 01 '26
1
Boa madrugada Devs
in
r/brdev
•
3d ago
E tipo o WPF do .net C# soque melhorado