Evet, navigasyon işlemini mvvmcross'ta özelleştirebilirsiniz. İşte bunun nasıl başarılacağına dair ayrıntılı bir genel bakış:
Gezinmeyi Özelleştirme
MVVMCross, görünümlerden ziyade ViewModels arasında navigasyonun gerçekleştiği bir ViewModel ilk gezinme yaklaşımı kullanır. Bu, platformdan bağımsız navigasyon mantığına izin vererek, iOS ve Android gibi farklı platformlarda karmaşık navigasyon akışlarını yönetmeyi kolaylaştırır.
Özel Görünüm Sunucılarını Kullanma
Gezinmeyi özelleştirmenin bir yolu, özel görünüm sunucularını kullanmaktır. MVVMCross, her platform için varsayılan görünüm sunumcuları sağlar, ancak sekme ekranları, diyaloglar veya hamburger menüleri gibi özel gezinme modellerini uygulamak için bunları geçersiz kılabilirsiniz. Bunu yapmak için, platforma özgü sunum yapandan (örn., Xamarin.forms için `` mvxformsPagePresenter ') miras alan özel bir sunumcu sınıfı oluşturur ve özel navigasyon bileşenlerinizi kullanmak için `` createnavigationPage' 'gibi yöntemleri geçersiz kılar [2] [9].
Navigasyon Etkinliklerini Alınan
Ayrıca, `` imvxnavigationservice '' tarafından sağlanan olayları ele geçirerek navigasyonu da özelleştirebilirsiniz. Bu hizmet, navigasyon sürecinin farklı aşamalarında özel mantığı yürütmenizi sağlayan `` Beforenavigate ', `` öğleden sonra', `beForeclose '' ve` queClose 'gibi çeşitli etkinlikler sunar. Örneğin, bu olayları ViewModels arasında gezinmeden önce veya sonra ek kontroller veya güncellemeler gerçekleştirmek için kullanabilirsiniz [1].
uri navigasyon ve derin bağlantı
MVVMCross, montaj özelliklerini kullanarak ViewModel'leriniz için rotaları tanımlamanızı sağlayan URI navigasyonunu destekler. Bu özellik, uygulamanızın belirli bölümlerine doğrudan harici bağlantılardan veya bildirimlerden erişilebileceği derin bağlantı sağlar. ViewModel başına birden fazla URI tanımlayabilir ve URI parametrelerine dayanarak hangi ViewModel'e gidebileceğini dinamik olarak belirlemek için "NavigationFacades" kullanabilirsiniz [1].
Özel Navigasyon Mantığı
Daha karmaşık senaryolar için, ViewModel'lerinizde özel navigasyon mantığını uygulayabilirsiniz. Örneğin, denemeden önce bir navigasyonun mümkün olup olmadığını kontrol etmek için `` Cannavigate '' yöntemini kullanabilirsiniz. Ek olarak, `showViewModel` yöntemini kullanarak bir parametre nesnesi ile viewModels arasında parametreleri iletebilirsiniz ve uygulamanızın farklı bölümleri arasında veri aktarmanıza izin verir [1] [4].
Özel Appstart
Son olarak, özel bir `` Appstart` sınıfındaki `` başlangıç '' yöntemini geçersiz kılarak uygulamanızın ilk gezinmesini özelleştirebilirsiniz. Bu, kullanıcı giriş durumu veya işletim sisteminden geçirilen parametreler gibi koşullara göre hangi ViewModel'in gezineceğine dinamik olarak karar vermenizi sağlar [4].
Genel olarak, MVVMCross, navigasyonu özelleştirmek için esnek bir çerçeve sağlar ve geliştiricilerin bunu özel uygulama ihtiyaçlarına uyarlamasına izin verir.
Alıntılar:[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-ctroller-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-n-mvvm-ppleation
[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/adved/customizing-using-app-and-setup
[10] https://nicksnettravels.builttoroam.com/post-2019-03-24-viewmodel-to-viewmodel-navigation-in-xamarinforms-pplication-with-pism-m-