Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Avalonia UI Cross-Platform Vaadi ve "Nerede Bu Community?" Çığlığım

asternix

Üye
Katılım
14 Mart 2026
Mesajlar
15
Avalonia'yı duyduğumda, sanki uzun süredir kayıp olan WPF kardeşimi bulmuş gibi hissettim. XAML, binding, MVVM... Hepsi tanıdık geldi. "Artık Linux ve macOS için de tek kod tabanından desktop app yazabilirim!" diye sevinçten havaya uçtum. Hemen bir test projesi açtım, VS Code'u yanıma aldım ve dalmaya hazırdım. Meğerse macera yeni başlıyormuş.

🚀 İlk Adımlar ve "Bu Çok Tanıdık" Hissi

Gerçekten de WPF'de yaptığın her şeyi neredeyse aynı mantıkla yapabiliyorsun. Bir TextBox bind etmek, bir Command tanımlamak... Hepsi aşina. Hatta biraz daha modern ve temiz geldi bana. Cross-platform derleme yapıp, tek bir .NET binary'sinin hem Windows'ta hem de Linux'ta çalıştığını görmek inanılmaz keyifliydi.

C#:
public class MainViewModel : ViewModelBase
{
    private string _greeting = "Hello Avalonia!";
    public string Greeting
    {
        get => _greeting;
        set => this.RaiseAndSetIfChanged(ref _greeting, value);
    }
}

Gördün mü? Neredeyse MVVM Toolkit'le aynı. Hiç yabancılık çekmedim.

😰 Sorun Nerede? "Stack'te Cevap Yok Abi!"

İşler, basit bir örnekten çıkıp gerçek bir ihtiyaca dönüştüğümde karardı. Diyelim ki ListView'inde item'ların rengini koşula göre değiştirmek istiyorsun. WPF'de DataTrigger veya Converter yazarsın, binlerce kaynak vardır. Avalonia'da ise... IValueConverter interface'i farklı bir namespace'te! DataTrigger yok, onun yerine DataTrigger benzeri ama syntax'ı farklı bir yapı var.

Sorun şu: Google'a "avalonia listview item background color binding" yazdığında çıkan sonuç sayısı, WPF'dekinin yanında komik kalıyor. StackOverflow'da sorulmuş 3-5 soru var, belki biri çözülmüş. GitHub issues'ları karıştırmak, Discord sunucusunda mesajın kaybolup gitmesini umarak sormak zorunda kalıyorsun. Community küçük olduğu için, "acayip" sayılmayan senin sorunun, daha önce kimse tarafından detaylıca dokumente edilmemiş olabiliyor.

💡 Çözüm? Kendi Çözümünü Kendin Üretmek

Bu durum seni ister istemez daha güçlü kılıyor. Kaynak koda dalıp bakmayı, kendi Converter'ını veya Behavior'ını yazmayı, basit bir kontrolü kendin extend etmeyi öğreniyorsun. WPF'de hazır bulduğun ve hiç düşünmediğin onlarca detayla burada yüzleşiyorsun. Zorlayıcı ama öğretici.

XML:
<ListBox Items="{Binding MyItems}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Border Background="{Binding MyProperty, Converter={x:Static local:MyColorConverter.Instance}}">
                <TextBlock Text="{Binding Name}"/>
            </Border>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Yani özetle, araç harika, vaatler gerçek. Ama yola çıkarken yanınıza sadece temel dokümanları değil, biraz da "maceracı ruhunuzu" almanız gerekiyor. WPF'deki gibi her türlü sorunuzun cevabının 1 click uzakta olmayacağını kabul etmelisiniz.

Peki ya siz? Cross-platform desktop için Avalonia, MAUI veya başka bir framework mü kullanıyorsunuz? Özellikle Avalonia'da takıldığınız ve çözümünü bulmakta zorlandığınız bir nokta oldu mu? Gelin fikirleri katalize edelim!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri