Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon هل يمكنني تخصيص عملية التنقل في MVVMCROSS


هل يمكنني تخصيص عملية التنقل في MVVMCROSS


نعم ، يمكنك تخصيص عملية التنقل في MVVMCROSS. فيما يلي نظرة عامة مفصلة حول كيفية تحقيق ذلك:

تخصيص التنقل

يستخدم MVVMCROSS نهج الملاحة الأول في ViewModel ، حيث يحدث التنقل بين مواد ViewModels بدلاً من المشاهدات. يسمح ذلك بمنطق التنقل المستقل عن النظام الأساسي ، مما يسهل إدارة تدفقات التنقل المعقدة عبر منصات مختلفة مثل iOS و Android.

استخدام مقدمي العرض المخصص

طريقة واحدة لتخصيص التنقل هي باستخدام مقدمي العرض المخصص. يوفر MVVMcross مقدمي العرض الافتراضي لكل منصة ، ولكن يمكنك تجاوزها لتنفيذ أنماط التنقل المخصصة مثل شاشات العرض أو الحوار أو قوائم الهامبرغر. للقيام بذلك ، يمكنك إنشاء فئة مقدم مخصص ترث من مقدم العرض الخاص بالنظام الأساسي (على سبيل المثال ، mvxformspagepresenter` من أجل xamarin.forms) وتجاوز أساليب مثل `createnavigationpage` لاستخدام مكونات التنقل المخصصة [2] [9].

اعتراض أحداث التنقل

يمكنك أيضًا تخصيص التنقل عن طريق اعتراض الأحداث التي توفرها "imvxnavigationservice". تقدم هذه الخدمة العديد من الأحداث مثل "BeForenavitation" و "Preafiveitive" و "BeforeClose" و "Afterclose" ، والتي تتيح لك تنفيذ المنطق المخصص في مراحل مختلفة من عملية التنقل. على سبيل المثال ، يمكنك استخدام هذه الأحداث لإجراء فحوصات أو تحديثات إضافية قبل أو بعد التنقل بين ViewModels [1].

uri التنقل والربط العميق

يدعم MVVMCross التنقل URI ، والذي يسمح لك بتحديد طرق لعرض ViewModels باستخدام سمات التجميع. تتيح هذه الميزة الارتباط العميق ، حيث يمكن الوصول إلى أجزاء محددة من التطبيق مباشرة من الروابط الخارجية أو الإخطارات. يمكنك تحديد URIS متعددة لكل ViewModel واستخدام "NavigationFacades" لتحديد ديناميكي أي ViewModel الذي يجب التنقل إليه استنادًا إلى معلمات URI [1].

منطق التنقل المخصص

للسيناريوهات الأكثر تعقيدًا ، يمكنك تنفيذ منطق التنقل المخصص في ViewModels. على سبيل المثال ، يمكنك استخدام طريقة `cannavitation` للتحقق مما إذا كان التنقل ممكنًا قبل محاولتها. بالإضافة إلى ذلك ، يمكنك تمرير المعلمات بين ViewModels باستخدام طريقة `showViewModel` مع كائن معلمة ، مما يتيح لك نقل البيانات بين أجزاء مختلفة من التطبيق الخاص بك [1] [4].

AppStart المخصص

أخيرًا ، يمكنك تخصيص التنقل الأولي لتطبيقك من خلال تجاوز طريقة "بدء التشغيل" في فئة "AppStart" مخصصة. يتيح لك ذلك تحديد أي ViewModel بشكل ديناميكي للانتقال إلى شروط مثل حالة تسجيل دخول المستخدم أو المعلمات التي تم تمريرها من نظام التشغيل [4].

بشكل عام ، يوفر MVVMCross إطارًا مرنًا لتخصيص التنقل ، مما يسمح للمطورين بتكييفه مع احتياجات التطبيق الخاصة بهم.

الاستشهادات:
[1] https://www.mvvmcross.com/documentation/fundamentals/navigation
[2] https://stackoverflow.com/questions/59814748/how-to-use-custom-navigationpage-with-mvvmcross-library-in-xamarin-forms
[3] https://stackoverflow.com/questions/43681201/custom-navigation-controller-in-an-mvvmcross-app
[4] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-tip-calc-navigation
[5] https://github.com/mvvmcross/mvvmcross/issues/4032
[6] https://softwareengineering.stackexchange.com/questions/120090/who-hould-control-navigation-in-an-mvvm-application
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://www.mvvmcross.com/documentation/platform/android/android-view-presenter
[9] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[10] https://nicksnettravels.builttoroam.com/post-2019-03-24-viewmodel-to