簡體   English   中英

將MVVM Prism導航參數傳遞到Xamarin Master-Detail Detail頁面

[英]Pass MVVM Prism navigation arguments to Xamarin Master-Detail Detail page

問題

嘿嘿等等

我有一個使用mvvm pyramid的主要詳細頁面應用程序。 用戶登錄到我的應用后,他們將從登錄頁面轉到主頁。 我想將導航參數從我的登錄頁面傳遞到嵌套在母版頁面中的用戶詳細信息頁面。 但是詳細信息頁面嵌套在母版頁的XAML中,因此在正確傳遞參數時會遇到問題。

應用程序結構

master-page.xaml不錯的小用戶界面,用戶登錄后即可在此處呈現菜單和用戶頁面

<MasterDetailPage.Master>
        <pages:HamburgerMenu x:Name="HamburgerMenu" />
    </MasterDetailPage.Master>
    <MasterDetailPage.Detail>
        <NavigationPage>
            <x:Arguments>
                <pages:UserPage x:Name="UserPage" />
            </x:Arguments>
        </NavigationPage>
    </MasterDetailPage.Detail>

呈現LoginPage的應用的app.xaml.cs入口點, 它不是菜單項的一部分,也不以任何方式與主詳細信息頁面相關聯,它只有一種方法可以將用戶導航到主詳細信息頁面

protected override void OnInitialized()
    {
        InitializeComponent();
        MainPage = new LoginPage();
    }

login-page-viewmodel.cs登錄並將嘗試將某些用戶信息從我的數據庫傳遞到母版頁,該母版頁具有包含數據綁定用戶名字段的嵌套詳細信息頁。

public NavigationParameters np = new NavigationParameters();

    // magic code everywhere

    private async void LoginAsync()
        {
            var user = await LoginAttemptAsync(_awsomePassword);

            np.Add("UserName", user.name);

            await _navigationService.NavigateAsync("MasterPage", np);
        }

我認為更改導航字符串以包括NavigationPage,而我的UserPage對其進行了修復。 等待別人的反饋。 現在接受正確的答案。

錯誤代碼

login-page-viewmodel.cs

public NavigationParameters np = new NavigationParameters();

    // magic code everywhere

    private async void LoginAsync()
        {
            var user = await LoginAttemptAsync(_awsomePassword);

            np.Add("UserName", user.name);

            await _navigationService.NavigateAsync("MasterPage", np);
        }

固定但不是最佳實踐

*使用Prism時,您應該通過URI建立導航堆棧。 這也可以讓Prism解析您的視圖,以便您在必要時將依賴項注入其中)

login-page-viewmodel.cs

public NavigationParameters np = new NavigationParameters();

    // magic code everywhere

    private async void LoginAsync()
        {
            var user = await LoginAttemptAsync(_awsomePassword);

            np.Add("UserName", user.name);

            await _navigationService.NavigateAsync("MasterPage/Navigation/UserPage", np);
        }

等待別人的反饋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM