Cara menavigasi halaman modal di Xamarin.Forms menggunakan Fresh.MVVM

Saya mencoba mendorong halaman modal di aplikasi formulir xamarin saya menggunakan MVVM saat menekan tombol. Saya sudah tahu cara menggunakan tumpukan navigasi, tetapi tidak tahu bagaimana melakukannya dengan halaman konten sebagai halaman modal, saya telah mencoba banyak hal, terutama memanggil metode PushPageModel.

Ini adalah hal terakhir yang saya coba: Lihat atau Halaman:

<Label
                x:Name="forgottenPasswordLabel"
                Text="Forgot password?"
                TextColor="LightPink"
                FontSize="16"
                FontAttributes="Bold"

                VerticalOptions="Start"
                HorizontalOptions="End"
                Margin="25,0,25,25">
                <Label.GestureRecognizers>
                    <TapGestureRecognizer Command="{Binding ForgotPasswordCommand}"/>
                </Label.GestureRecognizers>
</Label>

Kelas LihatModel:

public class LogInViewModel : FreshBasePageModel
    {
        public ICommand ForgotPasswordCommand { get; set; }

        public LogInViewModel()
        {
        }

        public override void Init(object initData)
        {
            ForgotPasswordCommand = new Command (async() =>
            {
                var newPage = FreshPageModelResolver.ResolvePageModel<ForgottenPasswordViewModel>();
                await CoreMethods.PushPageModel<ForgottenPasswordViewModel>(null, false, true);
            }); 
        }
    }

Kelas App.xaml.cs:

public App()
        {
            InitializeComponent();

            MainPage = FreshPageModelResolver.ResolvePageModel<LogInViewModel>();
        }

Kode ini memberikan kesalahan berikut: "FreshTinyIoC.TinyIoCResolutionException: 'Resolve failed: IFreshNavigationService"

Itu saja, jika Anda memerlukan informasi lebih lanjut, saya akan memberikannya segera setelah saya melihat permintaan Anda, terima kasih atas waktunya, semoga hari Anda menyenangkan.

Sunting: Pelacakan tumpukan diminta:

di FreshTinyIoC.FreshTinyIoCContainer.ResolveInternal (FreshTinyIoC.FreshTinyIoCContainer+pendaftaran TypeRegistration, parameter FreshTinyIoC.NamedParameterOverloads, opsi FreshTinyIoC.ResolveOptions) [0x000f7] di C:"Ini dia jalannya" di FreshTinyIoC.FreshTinyIoCContainer.Resolve (System.Type resolType, System. Nama string) [0x00000] di C:\"Ini dia jalannya" di FreshTinyIoC.FreshTinyIoCContainer.Resolve[ResolveType] (Nama Sistem.String) [0x00000] di C:"Ini dia jalannya" di FreshMvvm.FreshTinyIOCBuiltIn.Resolve[ ResolveType] (nama System.String) [0x00000] di C:"Ini dia jalannya" di FreshMvvm.PageModelCoreMethods.PushPageModelWithPage (halaman Xamarin.Forms.Page, FreshMvvm.FreshBasePageModel pageModel, data System.Object, modal System.Boolean, Sistem .Boolean animate) [0x00177] di C:"Ini dia jalannya" di FreshMvvm.PageModelCoreMethods.PushPageModel (FreshMvvm.FreshBasePageModel pageModel, System.Object data, System.Boolean modal, System.Boolean animate) [0x00048] di C:" Ini dia jalannya" di FreshMvvm.PageModelCoreMethods.PushPageModel[T] (data System.Object, modal System.Boolean, System.Boolean animate) [0x00040] di C:"Ini dia jalannya" di FirstApp.ViewModels.LogInViewModel.b__5_0 () [0x0003a] di D:\"Ini dia jalannya"


person Jaime Santos    schedule 08.02.2020    source sumber
comment
Dari apa yang saya pahami melalui pengecualian adalah ada sesuatu di ForgottenPasswordViewModel atau Tampilan Anda yang menyebabkan masalah ini, Sesuatu mungkin menimbulkan pengecualian atau Anda belum mengikuti struktur folder atau FreshMVVM sekarang untuk memudahkan kami memahaminya Anda harus menambahkan Stracktrace untuk pengecualian ini di sini!   -  person FreakyAli    schedule 08.02.2020
comment
@FreakyAli bagaimana cara mendapatkan jejak tumpukan untuk pengecualian   -  person Jaime Santos    schedule 08.02.2020
comment
Tambahkan blok coba-tangkap di blok tangkap ketika pengecualian dilemparkan, objek pengecualian berisi StackTrace Anda! Jika Anda memiliki pengecualian, ini adalah tempat terbaik untuk mulai mencari masalahnya!   -  person FreakyAli    schedule 08.02.2020
comment
@FreakyAli Saya memperbarui pertanyaan ini dengan StackTrace!   -  person Jaime Santos    schedule 08.02.2020
comment
Gagal menemukan instance IFreshNavigationService, jadi menurut saya Anda belum menginisialisasi FreshMVVM dengan benar. Pada titik tertentu, TinyIOC perlu diberi tahu cara membuat instance layanan navigasi. Saya ragu ini juga berfungsi dengan halaman non-modal.   -  person Ben Reierson    schedule 08.02.2020


Jawaban (1)


Masalahnya adalah kesalahpahaman konsep, saya mengira halaman konten dan halaman navigasi adalah dua jenis halaman yang berbeda, seperti halaman tab, halaman detail master, halaman carousel, dan halaman konten. Jadi saya mencoba untuk tidak menggunakan kode berikut dengan berpikir bahwa FreshNavigationContainer memaksa saya untuk menggunakan halaman navigasi dan bukan halaman konten, yang benar tetapi tidak sepenuhnya karena ya, itu memaksa Anda untuk menggunakan halaman navigasi, tetapi Anda juga menggunakan halaman konten, karena halaman navigasi adalah properti halaman konten, jadi seperti yang saya katakan, itu semua adalah kesalahpahaman konsep:

public partial class App : Application
    {
        public App()
        {
            InitializeComponent();

            var thePage = FreshPageModelResolver.ResolvePageModel<LogInViewModel>();
            MainPage = new FreshNavigationContainer(thePage);
        }
}

Saya tidak mengatakan ini pada pertanyaan, tetapi tujuan dari semua ini adalah untuk tidak melihat bilah di bagian atas layar, yang sekarang saya mengerti bahwa karena halaman navigasi dan halaman konten bukanlah 2 hal yang berbeda, Anda dapat melakukannya di page.xaml dengan:

<ContentPage NavigationPage.HasNavigationBar="False">
person Jaime Santos    schedule 09.02.2020