ใช่คุณสามารถปรับแต่งกระบวนการนำทางใน MVVMCROSS นี่คือภาพรวมโดยละเอียดของวิธีการบรรลุเป้าหมายนี้:
การปรับแต่งการนำทาง
MVVMCROSS ใช้วิธีการนำทาง ViewModel-First ซึ่งเป็นการนำทางระหว่าง ViewModels มากกว่ามุมมอง สิ่งนี้ช่วยให้ตรรกะการนำทางที่ไม่ขึ้นกับแพลตฟอร์มทำให้ง่ายต่อการจัดการกระแสการนำทางที่ซับซ้อนในแพลตฟอร์มที่แตกต่างกันเช่น iOS และ Android
โดยใช้ผู้นำเสนอมุมมองที่กำหนดเอง
วิธีหนึ่งในการปรับแต่งการนำทางคือการใช้ผู้นำเสนอมุมมองที่กำหนดเอง MVVMCROSS จัดเตรียมผู้นำเสนอมุมมองเริ่มต้นสำหรับแต่ละแพลตฟอร์ม แต่คุณสามารถแทนที่สิ่งเหล่านี้เพื่อใช้รูปแบบการนำทางที่กำหนดเองเช่นการแสดงแบบแท็บกล่องโต้ตอบหรือเมนูแฮมเบอร์เกอร์ ในการทำเช่นนี้คุณสร้างคลาสผู้นำเสนอที่กำหนดเองที่สืบทอดมาจากผู้นำเสนอเฉพาะแพลตฟอร์ม (เช่น `mvxformspagepresenter` สำหรับ xamarin.forms) และวิธีการแทนที่เช่น` createnavigationPage` เพื่อใช้ส่วนประกอบการนำทางที่กำหนดเอง [2] [9]
เหตุการณ์การนำทางที่สกัดกั้น
นอกจากนี้คุณยังสามารถปรับแต่งการนำทางโดยการสกัดกั้นเหตุการณ์ที่ได้รับจาก `imvxnavigationservice` บริการนี้มีกิจกรรมหลายอย่างเช่น `beforenavigate`,` ช่วงบ่าย ', `beforeclose` และ` afterclose' ซึ่งช่วยให้คุณสามารถดำเนินการตรรกะที่กำหนดเองในขั้นตอนต่าง ๆ ของกระบวนการนำทาง ตัวอย่างเช่นคุณอาจใช้กิจกรรมเหล่านี้เพื่อทำการตรวจสอบหรืออัปเดตเพิ่มเติมก่อนหรือหลังการนำทางระหว่าง ViewModels [1]
การนำทาง URI และการเชื่อมโยงลึก
MVVMCROSS รองรับการนำทาง URI ซึ่งช่วยให้คุณกำหนดเส้นทางสำหรับ ViewModels ของคุณโดยใช้แอสเซมบลี คุณลักษณะนี้ช่วยให้การเชื่อมโยงลึกซึ่งส่วนเฉพาะของแอปของคุณสามารถเข้าถึงได้โดยตรงจากลิงก์ภายนอกหรือการแจ้งเตือน คุณสามารถกำหนด URIs หลายตัวต่อ ViewModel และใช้ "NavigationFacades" เพื่อกำหนดว่า ViewModel ใดที่จะนำทางไปยังพารามิเตอร์ URI [1]
ตรรกะการนำทางที่กำหนดเอง
สำหรับสถานการณ์ที่ซับซ้อนมากขึ้นคุณสามารถใช้ตรรกะการนำทางที่กำหนดเองภายใน ViewModels ของคุณ ตัวอย่างเช่นคุณอาจใช้เมธอด `Cannavigate` เพื่อตรวจสอบว่ามีการนำทางไปก่อนที่จะลองหรือไม่ นอกจากนี้คุณสามารถผ่านพารามิเตอร์ระหว่าง ViewModels โดยใช้เมธอด `showviewmodel` ด้วยวัตถุพารามิเตอร์ช่วยให้คุณสามารถถ่ายโอนข้อมูลระหว่างส่วนต่าง ๆ ของแอปของคุณ [1] [4]
appstart ที่กำหนดเอง
ในที่สุดคุณสามารถปรับแต่งการนำทางเริ่มต้นของแอพของคุณโดยการเอาชนะเมธอด `startup` ในคลาส` 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-should-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-viewmodel-navigation-in-a-xamarinforms-application-with-prism-prism-prism และ -mvmcross-aspx/