Avalonia ui adalah kerangka kerja yang menyenangkan yang Anda ingin kembali lagi dan lagi. Jadi mari kita kembali lagi dan melihat beberapa fitur beserta kotak pesan saya.

Siapakah Avalonia?
Avalonia adalah kerangka kerja lintas platform yang memungkinkan Anda untuk mengembangkan antarmuka grafis pada semua platform yang relevan.
Dalam strukturnya, ia sangat dekat dengan wpf: xaml yang sama, binder yang serupa. Bahkan ada
tutorial resmi untuk pengembang WPF.
Avalonia terkenal karena pada masing-masing sistem itu merujuk ke antarmuka asli: Win32, MonoMac, X11 ...
Apa yang muncul di versi yang diperbarui- Mendukung 13 ikon pesan berbeda.
- Kemampuan untuk menyalin isi pesan menggunakan kombinasi tombol Cntrl + C.
- Menyesuaikan ukuran jendela dengan isinya.
- Sistem gaya yang disederhanakan yang memungkinkan mereka yang ingin dengan mudah bergabung dalam pengembangan dan dukungan yang baru.
- Mengganti TextBlock dengan TextBox, sekarang teks di jendela dapat dipilih.
- Arsitekturnya sendiri telah sepenuhnya didesain ulang.

Dokumentasi dapat ditemukan di
gitlab .
Paket itu sendiri dapat diunduh dari
nuget .
Mari kita bicara tentang fitur dan keripik avalonia
Tentunya, jika ada perbandingan, maka akan dibandingkan dengan wpf.
Hal pertama yang menarik perhatian Anda setelah kerangka kerja ms adalah kemampuan untuk mengikat perintah ke metode. Ya, secara fungsional ini memberikan lebih sedikit peluang, tetapi sebagai tanggapan menyederhanakan pendekatan untuk mengembangkan model tampilan.
<Button Command="{Binding RunTheThing}" CommandParameter="Hello World"> Do the thing! </Button>
public void RunTheThing(string parameter) {
Avalonia juga dibangun menggunakan ekstensi reaktif, yang memungkinkan Anda untuk bekerja dengan peristiwa kerangka kerja sebagai objek dari kelas pertama menggunakan sintaks deklaratif kueri LINQ - memungkinkan Anda untuk menulis kode yang ringkas dan mudah dibaca.
Tetapi sedikit lebih dalam, semuanya menjadi tidak begitu cerah dan jelas, dan dokumentasinya belum dipikirkan (tetapi Anda dapat membantu).
Mengikat gambar
Masalah yang saya temui segera ketika memperbarui proyek saya adalah bagaimana menampilkan gambar di jendela saya.
Pertama-tama, Anda perlu mendaftarkan direktori dengan gambar sebagai sumber daya Avalonia, karena penting bahwa setiap pengguna menampilkan ikon dan dengan mudah mengemasnya dengan semua kode.
<ItemGroup> ... <AvaloniaResource Include="Assets\*" /> </ItemGroup>
Sekarang di tag gambar Anda dapat dengan mudah mengatur gambar yang dipilih.
<Image Source="/Assets/error.ico" />
Tetapi ketika menggunakan vm Source, gambar tidak bisa hanya dilampirkan ke string, tetapi Bitmap harus digunakan.
<Image Source="{Binding ImagePath}" />
public Bitmap ImagePath { get; private set; }
Dan karenanya sekarang kita perlu mengekstrak gambar kita dari sumber daya. Mengapa menggunakan locator Avalonia?
ImagePath = new Bitmap(AvaloniaLocator.Current.GetService<IAssetLoader>() .Open(new Uri($" avares://ASSEMBLYNAME/relative/project/path/{ImageName}.ico")));
Perlu dicatat bahwa untuk sumber daya tertanam saat mengkompilasi uri, awalan
resm: // digunakan , dan untuk avalonia -
avares: // .
Menggambar
Bentuk-bentuk dalam avalonia dan wpf serupa, tetapi properti publik berbeda. Karenanya, mengunduh gambar svg dan mengonversinya menggunakan mskam ke ms xaml, tidak dapat langsung digunakan.
Tokoh adat
<PathGeometry Figures="M30 53 C15.641 53 4 41.359 4 27S15.641 1 30 1s26 11.641 26 26c0 7.135-2.874 13.599-7.528 18.297" FillRule="NonZero"/>
Berubah menjadi:
<GeometryDrawing Brush="#FF50C8EF" Geometry="M30 53 C15.641 53 4 41.359 4 27S15.641 1 30 1s26 11.641 26 26c0 7.135-2.874 13.599-7.528 18.297" />
Satu baris:
<Line X1="25" Y1="37" X2="25" Y2="39" StrokeThickness="2" Stroke="#FFFFFFFF" StrokeMiterLimit="10" StrokeStartLineCap="Round" StrokeEndLineCap="Round"/>
Berubah menjadi:
<Line StartPoint="25,37" EndPoint="25,39" StrokeThickness="2" Stroke="#FFFFFFFF" StrokeStartLineCap="Round" StrokeEndLineCap="Round"/>
Gaya
Tentang gaya itu sendiri cukup dikatakan dalam
dokumentasi . Perlu dicatat bahwa ini adalah gaya yang akrab dengan css kecil. Saya ingin menunjukkan cara menerapkan gaya dari file yang terpisah. Pertama, semua file xaml harus merupakan sumber avalonia.
<ItemGroup> <AvaloniaResource Include="**\*.xaml"> <SubType>Designer</SubType> </AvaloniaResource> ..... </ItemGroup>
Kedua, gaya diterapkan dengan cara yang sama seperti sumber daya gambar menggunakan uri dan locator.
YourControl.Styles.Add(new StyleInclude(new Uri("avares://ASSEMBLYNAME/relative/project/path.xaml")){Source = new Uri("avares://ASSEMBLYNAME/relative/project/path.xaml")});
Hal-hal kecil yang menyenangkan
TextBox memiliki properti Watermark. Ini memungkinkan Anda untuk tidak mencari paket pihak ketiga dan tidak memblokir TextBlock di atas TextBox, yang dapat dibaca di banyak tutorial untuk wpf.
<TextBox Watermark="Street address" />
Dan juga semua pengikat menggunakan PropertyChanged secara default untuk memicu pembaruan properti terkait.
Kesimpulannya
Saya menyarankan semua orang untuk mencoba kerangka kerja yang menarik ini. Terima kasih kepada pengguna
Artyom Gorchakov dan
Nikita Tsukanov .
Dan saya mengingatkan Anda bahwa avalonia memiliki dukungan yang nyaman dan luar biasa di
Gitter .