WPF Prism 7.0+ INavigationAware(导航)
示例:向模块发送参数
方式一、无参数导航
regionManager.RequestNavigate("LoginRegion", "LoginControl");
方式二、带参数导航
NavigationParameters pairs = new NavigationParameters();
pairs.Add("参数名", "参数值");
regionManager.Regions["LoginRegion"].RequestNavigate(obj, pairs);
方式三、带参数导航,并且有回调通知
NavigationParameters pairs = new NavigationParameters();
pairs.Add("参数名", "参数值");
regionManager.Regions["LoginRegion"].RequestNavigate(obj, navigationCallback =>
{
if (navigationCallback.Result == true)
{
var journal = navigationCallback.Context.NavigationService.Journal;
}
}, pairs);
示例:模块获取参数,实现 INavigationAware 接口
public class LoginViewModel : BindableBase, INavigationAware
{
#region 参数处理
public bool IsNavigationTarget(NavigationContext navigationContext)
{
throw new NotFiniteNumberException();
}
/// <summary>
/// 获取参数
/// </summary>
public void OnNavigatedTo(NavigationContext navigationContext)
{
if (navigationContext.Parameters.ContainsKey("参数名"))
{
string Content = navigationContext.Parameters.GetValue<string>("参数名");
}
}
public void OnNavigatedFrom(NavigationContext navigationContext)
{
}
/// <summary>
/// 模块切换时触发,回调
/// </summary>
public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
{
bool result = true;
if (MessageBox.Show("确认是否要离开当前模块?", "系统提示", MessageBoxButton.YesNo) == MessageBoxResult.No)
{
result = false;
}
continuationCallback(result);
}
#endregion
}

浙公网安备 33010602011771号