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 设置中