csharpshare.com
Show / Hide Table of Contents

在导航过程中传递参数

Gitee仓库 Prism-Documentation-CH 时间 2023-2-4

要在您的应用程序中实现所需的导航行为,您通常需要在导航请求期间指定其他数据,而不仅仅是目标视图名称。NavigationContext对象提供对导航URI以及在其中或外部所指定参数的访问。您可以从IsNavigationTarget、OnNavigatedFrom和OnNavigatedTo方法中访问NavigationContext。

Prism提供NavigationParameters类来帮助指定和检索导航参数。NavigationParameters类维护一个name-value对列表,其中每个参数都会对应一个。您可以使用此类将参数作为导航URI的一部分或者用于传递对象参数。

下面的代码示例演示了如何将单个字符串参数添加到NavigationParameters实例,以便它可以附加到导航URI。

Employee employee = Employees.CurrentItem as Employee;
if (employee != null)
{
    var navigationParameters = new NavigationParameters();
    navigationParameters.Add("ID", employee.Id);
    _regionManager.RequestNavigate(
        RegionNames.TabRegion,
        new Uri("EmployeeDetailsView" + navigationParameters.ToString(), UriKind.Relative)
    );
}

此外你还可以将对象参数添加到NavigationParameters实例中,并将其作为RequestNavigate方法的参数传递。下面的代码使用了更简单的基于字符串的导航:

Employee employee = Employees.CurrentItem as Employee;
if (employee != null)
{
    var parameters = new NavigationParameters();
    parameters.Add("ID", employee.Id);
    parameters.Add("myObjectParameter", new ObjectParameter());
    regionManager.RequestNavigate(RegionNames.TabRegion, "EmployeeDetailsView", parameters);
}

你可以通过NavigationContext对象的Parameters属性来获取导航参数。这个属性返回一个NavigationParameters类的实例,该类提供一个索引器属性以允许您轻松访问各个参数,而不用管它们是通过请求参数还是通过RequestNavigate方法传递的。

public void OnNavigatedTo(NavigationContext navigationContext)
{
    string id = navigationContext.Parameters["ID"];
    ObjectParameter myParameter = navigationContext.Parameters["myObjectParameter"];
}

您还可以使用泛型以类型安全的方式检索参数:

public void OnNavigatedTo(NavigationContext navigationContext)
{
    ObjectParameter objectParameter = navigationContext.Parameters.GetValue<ObjectParameter>("myObjectParameter");
}
本文导航
返回顶部 ©2022-2023 csharpshare.com    冀ICP备2022026743号-1     公安备案图标 冀公网安备 13052902000206号     Icons by Icons8