我实现了一个简单的Shell导航(伪代码(:
Home -> GoToAsync Page1 -> GoToAsync Page2 -> backward navigate to Home using GoToAsync("../../")
在最后一步中,我将传递在Page1和Page2中收集的参数,以便Home中的方法ApplyQueryAttributes((第一次执行,并且我可以检索它们。
从那一刻起,用户可以沿着不同的路径移动:
Home -> GoToAsync Page3
事实是:当使用后退按钮或AppTitle中默认的"返回"箭头从Page3导航回主页时,主页中的ApplyQueryAttributes((方法ALWAYS执行,并且ALWAYS从Page2 接收参数
这是一个BUG还是一个特征?
在我看来,这是一个BUG,因为当从Page3移动到Home时,没有任何东西会将这些参数推送到Home。它就像";"回到家";路线被缓存,当以这种方式行驶时;缓存的";执行路由(带有is参数(。
有什么办法可以防止这种行为吗?(不管是什么,错误还是功能(
我遇到了同样的问题,但找到了一种解决方法。它不能防止不当行为,但后面的参数被忽略:
每个页面都有这个方法来处理返回参数。最后,查询被清除,不会对其他页面造成任何伤害。
public async void ApplyQueryAttributes(IDictionary<string, object> query)
{
if (query.Count > 0)
{
// extract parameters
}
query.Clear(); // important
}