Microsoft-ui-xaml: الاقتراح: WinUI 3 يدعم الصدأ

تم إنشاؤها على ٢٠ مايو ٢٠٢٠  ·  14تعليقات  ·  مصدر: microsoft/microsoft-ui-xaml

يزداد انتشار الصدأ. يمكنه بالفعل تشغيل DirectX 12 ولكن فقط في وضع ملء الشاشة أو عبر مكتبات واجهة المستخدم التي تبدو وكأنها من صنع المهندسين للمهندسين. سيسمح الحصول على دعم WinUI3 ضد الصدأ بإنشاء تطبيقات مقاومة للصدأ تبدو حديثة ومصقولة وتتمتع تحت الغطاء بجميع مزايا الصدأ. هذا من شأنه أن يجعل المهندسين والتسويق سعداء ، أي جعل هذا المزيج قابلاً للتطبيق للتطبيقات التجارية.

feature proposal

التعليق الأكثر فائدة

ربما يكون winrt-rs قادرًا على تحقيق الاتصال ، لكن الصندوق winui3-rs الصريح الذي يسحب التبعيات الضرورية ولديه عالم مرحب به عامل سيجعل الوصول إليه أكثر سهولة.

ال 14 كومينتر

يبدو أن تعيينات اللغة قد تم العمل عليها بالفعل: https://github.com/microsoft/winrt-rs

ربما يكون winrt-rs قادرًا على تحقيق الاتصال ، لكن الصندوق winui3-rs الصريح الذي يسحب التبعيات الضرورية ولديه عالم مرحب به عامل سيجعل الوصول إليه أكثر سهولة.

هذا (على الأرجح) ممنوع بواسطة winrt-rs كونه مستقرًا.

تضمين التغريدة

يوفر صندوق Rust winrt دعم الإسقاط اللغوي والتعبئة ، مقارنة بـ C ++ / WinRT مع امتداد VS ودعم NuGet . يتم توفير كل ذلك بواسطة Rust / WinRT اليوم. من قائمتي إضافة بعض عينات Xaml قريبًا. لا يزال لدينا بعض الطريق لنقطعه لدعم بناء عناصر تحكم Xaml الخاصة بك في Rust ، ولكن يمكنك بالفعل إنشاء تطبيقات Xaml الأساسية ونحن نعمل بجهد للحصول على دعم كامل لنظام الكتابة في مكانه.

أحب أن أسمع ما الذي يبحث عنه الناس أيضًا. أستطيع أن أتخيل أن هذا يتعلق أكثر بتوفير الدعم لأنواع الأشياء التي يعتني بها مترجم Xaml تقليديًا ، لكن قد أكون مخطئًا.

أنا حقا أحب أن أرى هذا يحدث أيضا.
الصدأ أكثر شيوعًا لسبب ما. إنها لغة جيدة حقًا ، وقد قالت Microsoft إنها تستخدم الصدأ لبناء جزء من Windows.
قد يعني وجود إطار عمل للتطبيق مبني على الصدأ مستوى أداء c ++ ولكن برمز يمكن قراءته أفضل بكثير وأخطاء ذاكرة أقل.

kennykerr "أحب أن أسمع ما الذي يبحث عنه الناس أيضًا."
كان الدافع الرئيسي هو التمكن من الحصول على تطبيقات ذات مظهر احترافي مكتوبة محليًا في الصدأ قدر الإمكان. بطريقة ما يبدو أن الأشخاص الذين يتمتعون بمهارات رائعة في تصميم اللغة ليسوا نفس الأشخاص الذين لديهم مهارات فنية رائعة في تصميم عناصر واجهة المستخدم. لذلك فإن غلافًا من الصدأ لـ WIN UI 3 من شأنه أن يسد الفجوة. لكن العائق أمام الدخول يكون مرتفعًا عندما تكون هناك مكتبات يجب أن تقوم بالخدعة ولكن ليس لديها مثال على القيام بذلك بالفعل. إن وجود مثال على عالم مرحب يربط بين التقنيات معًا سيجعل الكثير من الأشخاص يرغبون في الغوص فيه وصنع مشتقاتهم الخاصة منه. أنا شخصياً أحب مثالاً على الصدأ باستخدام WIN UI 3 و DirectX12 في لوحة داخل تطبيق WIN UI. لم أبدأ العمل عليه لأنه بدا صعبًا عندما بدأت للتو في تعلم الصدأ.

لقد كنت أتطلع إلى القيام بالمزيد من أعمال واجهة المستخدم الرسومية في Rust. يبدو WinUI وكأنه المكان المناسب لتجربته

kennykerr "وجود مثال من عالم مرحب يربط بين التقنيات معًا سيجعل الكثير من الأشخاص يرغبون في الغوص فيه وصنع اشتقاقاتهم الخاصة منه."

أهلاً بالعالم يكفي لإظهار واجهة المستخدم. يُظهر أحد الأمثلة على تطبيق todo بعض التفاعلات البسيطة ، وكيف تتلاءم القطع معًا.

أتذكر الإعلان عن .Net MAUI ، وأتساءل عن مقدار دعائم ذلك في WinUI؟

بالنسبة لي ، يأتي الإلهام من إطار عمل Rust GUI يسمى vgtk.
https://bodil.lol/vgtk/

بناء جملة إطار العمل هذا مستوحى بشكل كبير من بناء جملة React الخاص بـ jsx لبناء واجهة مستخدم تعريفية ، ونموذج البرمجة الخاص به هو نموذج MVU الشهير في الوقت الحاضر.

للإعلان عن التطبيق ، تكتب

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>
    }
}

هذا قريب جدًا من jsx ، ولكنه أقرب إلى XAML وهو مثالي للاستخدام مع WinUI. يتم تمكين بناء الجملة هذا في الصدأ من خلال ميزة وحدات الماكرو الإجرائية الخاصة بالصدأ.

يبدو لي أن هذا النوع من إطار عمل واجهة المستخدم هو الاتجاه السائد هذه الأيام ، ولكي ينجح الصدأ مع WinUI ، فإنه يحتاج إلى ركوب هذا القطار أيضًا. تم إنجاز هذا النوع من العمل مرات لا تحصى ، وربما يكون من السهل جدًا على Microsoft إنشاء واحد لـ WinUI. قد تكون أيضًا فرصة جيدة لإطار عمل واجهة مستخدم عبر الأنظمة الأساسية لأن هذا ما ينتظره مجتمع واجهة المستخدم الرسومية الصدأ بفارغ الصبر ، ولكن يبدو أن هذا خارج نطاق هذه المشكلة.

هناك شيء جدير بالملاحظة أيضًا أن XAML يتطلب دعم "فئة جزئية" ، أليس كذلك؟ لذلك يمكنك إضافة عناصر تحكم إلى عناصر واجهة المستخدم. هل يدعم Rust هذا؟ هل يمكنك تقليدها بوحدات ماكرو إجرائية؟

شكرا لكل الردود! استمر في ذلك.

suleyth - لا تتطلب واجهة Xaml API فئات جزئية. هذه إحدى ميزات لغة C # التي يستخدمها مترجم Xaml. بالنسبة لـ C ++ والآن Rust ، نستكشف نهجًا مختلفًا تمامًا يكون أكثر طبيعية لتلك اللغات. ونعم ، تعد وحدات الماكرو الإجرائية طريقة رائعة لحل هذه المشكلة في Rust. نحن نستخدمها على نطاق واسع في winrt-rs .

أي تحديث على هذا؟
تحرير: سيكون من الرائع أن تكون هناك خارطة طريق لدعم الصدأ باستخدام Winui

لا يمكنني التحدث باسم فريق WinUI ، لكن الكثير من الدعم لـ Rust سيأتي من إسقاط لغة Rust / WinRT ( winrt-rs ). على وجه الخصوص ، أعمل الآن على إضافة دعم لتحديد وتنفيذ أنواع COM و WinRT في Rust . هذا شرط أساسي أساسي لتكامل Xaml الكامل. بمجرد أن يصبح ذلك جاهزًا ، يمكننا البدء في إضاءة دعم ربط Xaml بشكل طبيعي أكثر في Rust.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات