c# - 如何从 xViewModel 访问 NavigationParameters?
问题描述
从第一个视图中,我使用以下代码导航到第二个 xView:
var navigationParameters = new NavigationParameters{{ "id", 1 }};
_regionManager.RequestNavigate(RegionNames.xRegion, new Uri("xView", UriKind.Relative), navigationParameters);
从构造函数中的 xViewModel 我尝试通过
public xViewModel(NavigationParameters navigationParameters)
{
var id = (int)navigationParameters["id"];
}
我究竟做错了什么?
解决方案
您无法访问构造函数中的导航参数。您必须在视图模型中实现INavigationAware
接口。
public interface INavigationAware
{
bool IsNavigationTarget(NavigationContext navigationContext);
void OnNavigatedTo(NavigationContext navigationContext);
void OnNavigatedFrom(NavigationContext navigationContext);
}
该OnNavigatedTo
方法由 Prism 的导航服务自动调用。它包含一个Parameters
访问导航参数的属性,因此您可以这样做:
public void OnNavigatedTo(NavigationContext navigationContext)
{
var id = navigationContext.Parameters.GetValue<int>("id");
// ...other code.
}
您可以在 上使用GetValue<T>
和GetValues<T>
方法NavigationParameters
,因此您不必自己强制转换它们。
您可以在文档中阅读有关视图模型参与导航的更多信息。
推荐阅读
- python-3.x - 找不到python子进程命令
- python - Numpy:将 3D 数组与 2D 数组相乘
- logstash - 将 Logstash 配置转换为 NiFi:NiFi 相当于 Logstash 'kv' 过滤器
- html - 以 HTML 格式加载 CSV
- c# - IText7 和 C# 中缺少 GetPageN 方法
- jenkins - Opencenus 阻止我的 java 进程退出
- android - 在哪里存储读/写 json 文件?
- javascript - 添加 CSS 关键帧动画会改变图像大小
- php - PHP 服务器只运行 300 秒
- react-native - TopTabNavigator 添加自定义图标