1.传递参数
private readonly IRegionManager _reionManager;//通过IRegionManager接口获取当全局定义可用区域,往这个区域动态的去设置内容.
public MainViewModel(IRegionManager regionManager)
{
_reionManager = regionManager; //在构造函数中赋值
}
/// <summary>
/// 传值方法
/// </summary>
/// <param name="obj"></param>
private void Open(object obj)
{
List<string> lists = new List<string>()
{
"123","456","789"
};
NavigationParameters keys = new NavigationParameters
{
{ "Title", lists }
};//这个是个字典
//RequestNavigate这个就是导航的参数传递
_reionManager.Regions["ContentRegion"].RequestNavigate(obj.ToString(),keys); //设定的内容通过依赖注入的形式
}
2.接收
public class ViewAViewModel : BindableBase, INavigationAware//接收参数先要继承一个接口
{
public ViewAViewModel()
{
//IsNavigationTarget方法为true第二次不会进来
}
private string Info;
public string info
{
get { return Info; }
set
{
Info = value;
RaisePropertyChanged();
}
}
/// <summary>
/// 每次重新导航的时候,是否重用原来的实例
/// </summary>
/// <param name="navigationContext"></param>
/// <returns></returns>
public bool IsNavigationTarget(NavigationContext navigationContext)
{//如果这里true,第二次导航进来时就不会去构造函数了
return true;
}
/// <summary>
/// 拦截请求
/// </summary>
/// <param name="navigationContext"></param>
public void OnNavigatedFrom(NavigationContext navigationContext)
{
}
/// <summary>
/// 接收参数
/// </summary>
/// <param name="navigationContext"></param>
public void OnNavigatedTo(NavigationContext navigationContext)
{
if (navigationContext.Parameters.ContainsKey("Title"))//key一定要对的上
{
List<string> Lists = navigationContext.Parameters.GetValue<List<string>>("Title");
info = string.Join("\r\n", Lists);
}
}
}