Ste*_*BEG 3 xamarin xamarin.forms
在我的 Page1 后面的代码中,我有:
{
//do not select item
((ListView)sender).SelectedItem = null;
//go to stockDetailsPage
await Shell.Current.GoToAsync("postlogin/stockdetails?tickerSymbol=AAPL.NASDAQ");
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我对值进行了硬编码以对其进行测试。
早些时候它没有 param ,它可以工作,现在我需要传递 param tickerSymbol。在我的 ViewModel 的 stockDetailsPage 中,我添加了
[QueryProperty("TickerSymbol", "tickerSymbol")] 高于我的班级
在我的班级中,我声明了属性:
public string TickerSymbol
{
set { SetProperty(ref tickerSymbol, Uri.UnescapeDataString(value)); }
get { return tickerSymbol; }
}
Run Code Online (Sandbox Code Playgroud)
因此,在该 vm 的构造函数中,我现在想使用该参数的输入参数调用方法,但我null一直在获取。
你能告诉我我错在哪里吗?
小智 7
正如 Xamarin文档所说,它应该能够将 param 传递给页面的 BindingContext 类,我尝试了以下操作并且它有效:
在后面的代码中,将 BindingContext 设置为您的 ViewModel:
TestParamViewModel testParamViewModel;
public TestPage()
{
InitializeComponent();
testParamViewModel = new TestParamViewModel();
this.BindingContext = testParamViewModel;
}
Run Code Online (Sandbox Code Playgroud)
将 QueryPropertyAttribute 添加到您的 ViewModel:
[QueryProperty("Name", "name")]
class TestParamViewModel
{
string name;
public string Name
{
set
{
name = Uri.UnescapeDataString(value);
}
}
}
Run Code Online (Sandbox Code Playgroud)
呼叫导航:
await Shell.Current.GoToAsync("testpage?name=Abyssinian");
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
1516 次 |
| 最近记录: |