在使用NavigationPage和TabbedPage时,倒向导航(backwards shell navigation)不会触发ApplyQueryAttributes方法,并且无法获取查询数据。这会导致在返回到前一页时无法正确地设置页面上的数据。
要解决此问题,可以使用INavigationAware接口并在页面中实现ApplyQueryAttributes方法,如下所示:
public class MyPage : ContentPage, INavigationAware
{
public void OnNavigatedFrom(INavigationParameters parameters)
{
// Leave this blank
}
public void OnNavigatedTo(INavigationParameters parameters)
{
// Handle forward navigation
if (parameters.GetNavigationMode() == NavigationMode.New)
{
// Get query data
var myData = parameters.GetValue("myData");
// Do something with myData
}
}
public void OnNavigatingTo(INavigationParameters parameters)
{
// Handle backwards navigation
if (parameters.GetNavigationMode() == NavigationMode.Back)
{
// Get query data
var myData = parameters.GetValue("myData");
// Do something with myData
}
}
public void ApplyQueryAttributes(QueryAttributes queryAttributes)
{
// Set query data
queryAttributes["myData"] = "Some data";
}
}
这样,即使在倒向导航时,也可以正确地获取查询数据并设置页面上的数据。