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

Siapakah Avalonia?
Avalonia adalah kerangka kerja lintas platform yang memungkinkan Anda mengembangkan antarmuka grafis pada semua platform saat ini.
Dalam strukturnya, ia sangat dekat dengan wpf: xaml yang mirip, penjilidan yang serupa. Bahkan ada
tutorial resmi untuk pengembang WPF.
Avaloniya juga terkenal karena pada masing-masing sistem ia mengakses antarmuka aslinya: Win32, MonoMac, X11 ...
Apa yang muncul di versi yang diperbarui- Dukungan untuk 13 ikon pesan berbeda.
- Kemampuan untuk menyalin isi pesan menggunakan kombinasi tombol Cntrl + C.
- Sesuaikan ukuran jendela dengan isinya.
- Sistem gaya yang disederhanakan yang memungkinkan siapa saja untuk dengan mudah terlibat 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-fiturnya
Tentunya, jika ada perbandingan, itu akan dibandingkan dengan wpf.
Hal pertama yang menarik perhatian Anda setelah kerangka kerja dari ms adalah kemampuan untuk mengikat perintah ke metode. Ya, secara fungsional itu memberi lebih sedikit peluang, tetapi sebagai responsnya menyederhanakan pendekatan untuk mengembangkan model tampilan.
<Button Command = "{Binding RunTheThing}" CommandParameter = "Hello World"> Do the thing! </ Button>
public void RunTheThing (string parameter) {
Avaloniya juga dibangun menggunakan ekstensi reaktif, yang memungkinkan bekerja dengan acara kerangka kerja seperti halnya dengan objek kelas satu menggunakan sintaks kueri deklaratif 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, Anda perlu mendaftarkan direktori dengan gambar sebagai sumber avalonia karena penting bahwa ikon ditampilkan di setiap pengguna dan mudah dikemas dengan seluruh kode.
<ItemGroup> ... <AvaloniaResource Include = "Assets \ *" /> </ ItemGroup>
Sekarang Anda dapat dengan mudah mengatur gambar yang dipilih dalam tag gambar.
<Image Source = "/ Assets / error.ico" />
Tetapi ketika menggunakan vm Source, gambar tidak bisa hanya disalurkan ke string, tetapi Anda harus menggunakan Bitmap.
<Image Source = "{Binding ImagePath}" />
public Bitmap ImagePath {get; private set; }
Dan, karenanya, sekarang kita perlu mengekstraksi citra kita dari sumber daya. Apa yang Anda butuhkan untuk menggunakan avalonia locator.
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
Angka-angka dalam avalonia dan WPF serupa, tetapi properti publik berbeda. Oleh karena itu, setelah mengunduh gambar svg dan mengubahnya menjadi ms xaml menggunakan inskape, mereka tidak dapat diakses dengan segera.
Bentuk sewenang-wenang
<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" />
Sebuah garis
<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
Gaya-gaya itu sendiri cukup dijelaskan dalam
dokumentasi .
Perlu dicatat bahwa ini adalah gaya yang akrab dengan campuran kecil css.
Saya ingin menunjukkan cara menerapkan gaya dari file yang terpisah.
Pertama, semua file xaml harus merupakan sumber daya avalonian.
<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
Itu memungkinkan untuk tidak mencari paket pihak ketiga dan tidak memagari TextBlock di atas TextBox, yang dapat dibaca di banyak tutorial untuk wpf.
<TextBox Watermark = "Street address" />
Selain itu, semua penjilidan default menggunakan PropertyChanged untuk memicu pembaruan properti terkait.
Kesimpulannya
Saya menyarankan kepada 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 .