تمرين: تنفيذ التنقل المنبثق
في السيناريو النموذجي، لديك تطبيق .NET MAUI يحتوي على صفحات لعرض معلومات حول الأجسام الفلكية، وأطوار القمر، وأوقات شروق الشمس/غروب الشمس. يتضمن التطبيق أيضا صفحة حول. حاليا، كل هذه الصفحات مستقلة، ولكنك تريد توفير طريقة منطقية للمستخدم للتنقل بينها.
في هذا التمرين، يمكنك إضافة التنقل المنبثق إلى التطبيق.
تستخدم هذه الوحدة حزمة تطوير البرمجيات .NET 10.0. تأكد من تثبيت .NET 10.0 عن طريق تشغيل الأمر التالي في طرفية الأوامر المفضلة لديك:
dotnet --list-sdks
يظهر إخراج مشابه للمثال التالي:
9.0.100 [C:\Program Files\dotnet\sdk]
10.0.100 [C:\Program Files\dotnet\sdk]
تأكد من إدراج إصدار يبدأ بـ 10. إذا لم يكن هناك أي شيء مدرج أو لم يتم العثور على الأمر، قم بتثبيت أحدث مجموعة تطوير .NET 10.0.
افتح حل المبتدئين
استنساخ أو تحميل exercise repo.
إشعار
من الأفضل استنساخ محتوى التمرين أو تنزيله إلى مسار مجلد قصير، مثل C:\dev، لتجنب تجاوز الملفات المنشأة الحد الأقصى لطول المسار.
انتقل إلى مجلد exercise1 في المستودع المستنسخ، ثم انتقل إلى مجلد البدء.
استخدم Visual Studio لفتح حل Astronomy.sln أو المجلد في Visual Studio Code.
في نافذة مستكشف الحلول، في مشروع Astronomy، قم بتوسيع مجلد Pages. يحتوي هذا المجلد على الصفحات التالية:
- حول الصفحة. تعرض هذه الصفحة معلومات التطبيق.
- MoonPhasePage. تعرض هذه الصفحة معلومات محددة حول مراحل القمر كما هو معروض من الأرض.
- شروق الشمس. تعرض هذه الصفحة أوقات شروق الشمس وغروب الشمس للمواقع على الأرض. يتم توفير البيانات بواسطة خدمة ويب Sunrise Sunset.
قم بإنشاء التطبيق وتشغيله. عند بدء تشغيل التطبيق، يتم عرض MoonPhasePage ، ولكن حاليا لا توجد وسائل متوفرة لتمكين المستخدم من الانتقال إلى الصفحات الأخرى.
تظهر الصورة التالية التطبيق الذي يعمل على محاكي Android:
أغلق التطبيق وارجع إلى Visual Studio أو Visual Studio Code.
إضافة التنقل المنبثق
في نافذة Solutions Explorer، افتح صفحة AppShell.xaml .
في محرر علامات XAML، قم بإحاطة العنصر الموجود
<ShellContent>ب<FlyoutItem>.Titleتعيين الخاصية للعنصر<Flyout>ليكون Moon Phase. يجب أن تبدو العلامات كما يلي:<FlyoutItem Title="Moon Phase"> <ShellContent ContentTemplate="{DataTemplate local:MoonPhasePage}"/> </FlyoutItem>أضف خاصية
FlyoutIconإلى العقدة<Shell>لعرض صورة. بشكل افتراضي، فإنه يعرض ثلاثة أشرطة أفقية، ولكن يمكننا تغييرها إلى ما يحلو لنا. يجب أن تبدو العلامات كما يلي:<Shell x:Class="Astronomy.AppShell" xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:Astronomy.Pages" FlyoutIcon="moon.png">قم بتشغيل التطبيق: يجب أن تشاهد الآن صورة القمر في الزاوية العلوية اليمنى من التطبيق.
اضغط على الأيقونة وتظهر القائمة المنبثقة.
أضف الآن المزيد من خيارات القائمة المنبثقة. قم بإنشاء جديد
<FlyoutItem>أسفل واحد قمت به للتو وتعيينهTitleإلى شروق الشمس.ShellContentيجب أن يشير إلىSunrisePageالصفحة.أضف آخر
<FlyoutItem>، واضبط عنوانه على حول. هذه المرة قم بتعيينShellContentإلىAboutPage. يجب أن يبدو XAML لهذين العنصرين كما يلي:<FlyoutItem Title="Sunrise"> <ShellContent ContentTemplate="{DataTemplate local:SunrisePage}"/> </FlyoutItem> <FlyoutItem Title="About"> <ShellContent ContentTemplate="{DataTemplate local:AboutPage}"/> </FlyoutItem>قم بتشغيل التطبيق مرة أخرى، والآن هناك ثلاثة خيارات في القائمة المنبثقة. يؤدي الضغط على عنصر القائمة المنبثقة إلى عرض الصفحة الخاصة به.
إشعار
إذا كنت تعمل على نظام أساسي آخر غير Windows، فقد تحتاج إلى تمكين إذن الموقع لتطبيقك على هذا النظام الأساسي لكي تعمل صفحة Sunrise/Sunset Times . على سبيل المثال، على جهاز Android، قم بتعيين الوصول إلى الموقع إلى السماح فقط أثناء استخدام التطبيق.
إضافة أيقونات
ربما لاحظت أن عناصر القائمة المنبثقة تبدو فارغة بعض الشيء. يمكنك إضافة أيقونات إلى عناصر القائمة المنبثقة باستخدام الخاصية Icon .
تمت إضافة بعض الصور بالفعل إلى مجلد الموارد\الصور لاستخدامها.
Iconتعيين الخاصية الأولىFlyoutItemإلى moon.png.<FlyoutItem Title="Moon Phase" Icon="moon.png"> <ShellContent ContentTemplate="{DataTemplate local:MoonPhasePage}" /> </FlyoutItem>كرر ذلك مع عنصري القائمة المنبثقة الآخرين، باستخدام sun.png question.png على التوالي.
<FlyoutItem Title="Sunrise" Icon="sun.png"> <ShellContent ContentTemplate="{DataTemplate local:SunrisePage}"/> </FlyoutItem> <FlyoutItem Title="About" Icon="question.png"> <ShellContent ContentTemplate="{DataTemplate local:AboutPage}"/> </FlyoutItem>شغل التطبيق وافتح القائمة المنبثقة. يحتوي كل عنصر قائمة منبثقة الآن على أيقونة مقترنة به.
إضافة رأس قائمة منبثقة
توجد عناصر القائمة المنبثقة في أعلى القائمة المنبثقة، مما يجعلها صعبة التمييز. يمكننا إضافة بعض المساحة إلى الأعلى، وحتى بأكملها View باستخدام <Shell.FlyoutHeader>.
إضافة رأس قائمة منبثقة كعنوان تابع للعقدة
<Shell>:<Shell.FlyoutHeader> </Shell.FlyoutHeader>يمكنك إنشاء أي تسلسل هرمي للعرض ترغب فيه
<Shell.FlyoutHeader>داخل . دعونا نضع فيGridمعImage.<Shell.FlyoutHeader> <Grid HeightRequest="100" BackgroundColor="DarkSlateBlue"> <Image Source="moon.png" /> </Grid> </Shell.FlyoutHeader>