Xamarin.Forms Shell 如何在路由导航中向字符串注入多个不同的值

Posted

技术标签:

【中文标题】Xamarin.Forms Shell 如何在路由导航中向字符串注入多个不同的值【英文标题】:Xamarin.Forms Shell how to inject multiple and different values ​to string in route navigation 【发布时间】:2019-10-24 14:36:42 【问题描述】:

如何将任何属性注入到我们使用 Shell 导航的页面中 使用 Xamarin 的本机导航很简单,因为您必须实例化页面的类型:

Navigation.PushAsync(new HomeViewPage  x = y );

在 Shell 中只允许我传递字符串值

Shell.Current.GoToAsync($"//home/bottomtab2?name="Cat"");

我正在尝试传递一个布尔值,它向我显示以下错误: ''System.String' 类型的对象无法转换为'System.Boolean' 类型。'

Shell.Current.GoToAsync($"//home/bottomtab2?test=true");

如果你尝试发送多个参数,发送的参数都不起作用,有没有办法同时发送几个?

Shell.Current.GoToAsync($"//home/bottomtab2?name="Cat"?test="Dog"");

【问题讨论】:

docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/… 你链接的那个页面有passing data的信息 @Jason 但它只允许我传递字符串值,我试图传递一个布尔值,它向我显示以下错误:'System.String' 类型的对象无法转换为类型' System.Boolean'.' 【参考方案1】:

首先在Route uri中传值时,多个参数需要连接&而不是?like

Shell.Current.GoToAsync($"//home/bottomtab2?name="Cat"&test="Dog"");

第二个如果你想传递bool类型

Shell.Current.GoToAsync($"//home/bottomtab2?test=true");

在你的目标页面中,你可以将它作为一个字符串接收,那么它就不会抛出错误,比如:

[QueryProperty("Test", "test")]
public partial class AboutPage : ContentPage

 string test;
 public string Test
    
        set =>test = Uri.UnescapeDataString(value); 
        get => test;

    

【讨论】:

谢谢! Uri.UnescapeDataString 是我正在寻找删除那些讨厌的 %22 的东西!

以上是关于Xamarin.Forms Shell 如何在路由导航中向字符串注入多个不同的值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 xamarin.forms-shell 在 XAML 中动态绑定类型为 <ShellContent> 的 Tab.Items 列表

如何向 Xamarin Forms App Shell Tabbar 添加顶部边框

如何将 Xamarin Forms Shell 集成到 MvvmCross 设置中

如何将 Xamarin Forms Shell 集成到 MvvmCross 设置中

Xamarin.Forms Shell 将数据传递到弹出项视图

Xamarin Forms Shell 如何使用自定义渲染器自定义选项卡