Microsoft-ui-xaml: Proposal: Dukungan karat WinUI 3

Dibuat pada 20 Mei 2020  ·  14Komentar  ·  Sumber: microsoft/microsoft-ui-xaml

Karat menjadi semakin populer. Itu sudah dapat menggerakkan DirectX 12 tetapi hanya dalam mode layar penuh atau melalui perpustakaan UI yang terlihat seperti dibuat oleh para insinyur untuk para insinyur. Memiliki dukungan WinUI3 untuk karat akan memungkinkan untuk membangun aplikasi karat yang terlihat modern dan dipoles dan di bawah tenda menikmati semua keuntungan dari karat. Itu akan membuat para insinyur dan pemasaran senang, yaitu membuat kombinasi ini layak untuk aplikasi komersial.

feature proposal

Komentar yang paling membantu

winrt-rs mungkin dapat mencapai koneksi, tetapi peti winui3-rs eksplisit yang menarik dependensi yang diperlukan dan memiliki hello world yang berfungsi akan membuatnya jauh lebih mudah diakses.

Semua 14 komentar

Pemetaan bahasa tampaknya sudah dikerjakan: https://github.com/microsoft/winrt-rs

winrt-rs mungkin dapat mencapai koneksi, tetapi peti winui3-rs eksplisit yang menarik dependensi yang diperlukan dan memiliki hello world yang berfungsi akan membuatnya jauh lebih mudah diakses.

Ini (kemungkinan) diblokir oleh winrt-rs menjadi stabil.

@kennykerr sebagai FYI

Peti Rust winrt menyediakan proyeksi bahasa dan dukungan pengemasan, sebanding dengan C++/WinRT dengan ekstensi VS dan dukungan NuGet . Semua itu disediakan oleh Rust/WinRT hari ini. Ada di daftar saya untuk segera menambahkan beberapa sampel Xaml. Kami masih memiliki beberapa cara untuk mendukung pembuatan kontrol Xaml Anda sendiri di Rust, tetapi Anda sudah dapat membangun aplikasi Xaml dasar dan kami bekerja keras untuk mendapatkan dukungan sistem tipe lengkap.

Saya ingin mendengar apa lagi yang dicari orang. Saya dapat membayangkan ini lebih tentang memberikan dukungan untuk hal-hal yang secara tradisional ditangani oleh kompiler Xaml, tetapi saya mungkin salah.

Saya sangat ingin melihat ini terjadi juga.
Karat semakin populer karena suatu alasan. Ini adalah bahasa yang sangat bagus, dan Microsoft bahkan mengatakan menggunakan rust untuk membangun beberapa bagian Windows.
Memiliki kerangka kerja aplikasi yang dibangun di sekitar karat akan berarti kinerja level c++ tetapi dengan kode yang jauh lebih mudah dibaca dan lebih sedikit bug memori.

@kennykerr "Saya ingin mendengar apa lagi yang dicari orang."
motivasi utamanya adalah untuk dapat memiliki aplikasi yang tampak profesional yang ditulis sebanyak mungkin dengan bahasa asli. Entah bagaimana tampaknya orang yang memiliki keterampilan desain bahasa yang hebat tidak sama dengan orang yang memiliki keterampilan desain widget UI artistik yang hebat. Jadi pembungkus berkarat untuk WIN UI 3 akan menjembatani kesenjangan. Tetapi hambatan untuk masuk tinggi ketika ada perpustakaan yang seharusnya melakukan trik tetapi tidak memiliki contoh untuk benar-benar melakukannya. Memiliki contoh hello world yang menyatukan teknologi akan membuat lebih banyak orang benar-benar ingin terjun dan membuat turunannya sendiri. Saya pribadi akan menyukai contoh karat menggunakan WIN UI 3 dan DirectX12 di panel dalam aplikasi WIN UI. Saya tidak mulai mengerjakannya karena sepertinya sulit ketika juga baru mulai belajar karat.

Saya sudah tak sabar untuk melakukan lebih banyak pekerjaan GUI di Rust. WinUI terdengar seperti tempat untuk mencobanya

@kennykerr "Memiliki contoh hello world yang menyatukan teknologi akan membuat lebih banyak orang benar-benar ingin terjun dan membuat turunannya sendiri."

Halo dunia sudah cukup untuk menunjukkan ui. Contoh aplikasi todo menunjukkan beberapa interaksi sederhana, dan bagaimana bagian-bagiannya cocok satu sama lain.

Saya ingat pengumuman tentang .Net MAUI , dan saya bertanya-tanya berapa banyak fondasi yang ada di WinUI?

Bagi saya, inspirasinya berasal dari kerangka GUI Rust yang disebut vgtk.
https://bodil.lol/vgtk/

Sintaks framework ini sangat terinspirasi oleh sintaks jsx React untuk membangun UI deklaratif, dan model pemrogramannya adalah model MVU yang populer saat ini.

Untuk mendeklarasikan aplikasi, Anda menulis

fn view(&self) -> VNode<Model> {
    gtk! {
        <Application::new_unwrap(None, ApplicationFlags::empty())>
            <Window border_width=20 on destroy=|_| Message::Exit>
                <HeaderBar title="inc!" show_close_button=true />
                <Box spacing=10 halign=Align::Center>
                    <Label label=self.counter.to_string() />
                    <Button label="inc!" image="add" always_show_image=true
                            on clicked=|_| Message::Inc />
                </Box>
            </Window>
        </Application>
    }
}

Ini sangat dekat dengan jsx, tetapi bahkan lebih dekat dengan XAML yang sempurna digunakan untuk WinUI. Sintaks di rust ini diaktifkan oleh fitur makro prosedural rust.

Tampaknya bagi saya bahwa jenis kerangka kerja UI ini adalah tren akhir-akhir ini, dan agar karat dengan WinUI berhasil, ia perlu naik kereta ini juga. Jenis pekerjaan ini telah dilakukan berkali-kali, dan mungkin sangat mudah bagi Microsoft untuk membuatnya untuk WinUI. Ini mungkin juga merupakan peluang bagus untuk kerangka kerja UI lintas platform karena itulah yang ditunggu-tunggu oleh komunitas GUI karat, tetapi itu tampaknya di luar cakupan masalah ini.

Yang juga perlu diperhatikan adalah, XAML membutuhkan dukungan 'kelas parsial', bukan? Jadi Anda dapat menambahkan kontrol ke elemen UI. Apakah Rust mendukung ini? Bisakah Anda menirunya dengan makro prosedural?

Terima kasih untuk semua umpan balik! Tetap datang.

@suleyth - Xaml API tidak memerlukan kelas parsial. Itu adalah fitur bahasa C# yang digunakan oleh compiler Xaml. Untuk C++ dan sekarang Rust kami sedang mengeksplorasi pendekatan yang sama sekali berbeda yang lebih alami untuk bahasa tersebut. Dan ya, makro prosedural adalah cara yang bagus untuk menyelesaikan ini di Rust. Kami menggunakannya secara ekstensif di winrt-rs .

Ada pembaruan tentang ini?
Sunting: Akan lebih bagus jika ada peta jalan untuk mendukung karat dengan winui

Saya tidak dapat berbicara mewakili tim WinUI, tetapi sebagian besar dukungan untuk Rust akan datang dari proyeksi bahasa Rust/WinRT ( winrt-rs ). Secara khusus, saya sekarang bekerja untuk menambahkan dukungan untuk mendefinisikan dan mengimplementasikan tipe COM dan WinRT di Rust . Itu prasyarat utama untuk integrasi Xaml lengkap. Setelah itu siap, kita dapat mulai melihat menyalakan dukungan pengikatan Xaml secara lebih alami di Rust.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat