.NET MAUI -使用字典作为参数的shell导航出错

h7wcgrx3  于 2022-12-23  发布在  Shell
关注(0)|答案(2)|浏览(203)

我想导航到具有多个参数的页面。
为此,我使用字典:

await Shell.Current.GoToAsync($"{nameof(DetailPage)}?",
                new Dictionary<string, string>
                {
                    ["Name"] = s.RecipeName,
                    ["Ingredients"] = s.Ingredients,
                    ["Steps"] = s.Steps
                });

但在Visual Studio中,我得到这个错误:

Argument 2: cannot convert from 'System.Collections.Generic.Dictionary<string, string>' to 'bool'

有人知道如何解决这个问题吗?

lf3rwulv

lf3rwulv1#

GoToAsync()的方法签名需要一个boolIDictionary<string, object>作为第二个参数,而您传递给它的是一个Dictionary<string, string>
由于编译器找不到任何匹配的重载,它只尝试第一个重载。但是,您的Dictionary<string, string>不能被类型转换为bool,因此出现编译器错误。
有关不同GoToAsync()变体的更多信息:https://learn.microsoft.com/en-us/dotnet/api/microsoft.maui.controls.shell.gotoasync?view=net-maui-7.0
请注意,Dictionary<string, string>Dictionary<string, object>不同,只有后者才是编译器可接受的,因为它具有与方法重载的第二个变体(或第一个变体,如果您在第二个位置提供bool)的签名中指定的接口相同的类型参数。
要解决此问题,请将代码更改为以下代码:

await Shell.Current.GoToAsync($"nameof(DetailPage)}?",
    new Dictionary<string, object>
    {
        ["Name"] = s.RecipeName,
        ["Ingredients"] = s.Ingredients,
        ["Steps"] = s.Steps
    }
);

这应该可以工作,因为您可以将string赋值给object

ohtdti5x

ohtdti5x2#

您的代码应为

await Shell.Current.GoToAsync(nameof(DetailPage), true, new Dictionary<string, object>
                {
                    {"Name", s.RecipeName },
                    {"Ingredients", s.Ingredients},
                    {"Steps", s.Steps}
                });

相关问题