Fork me on Github

Prism_导航

一、导航中传递参数

1.通过NavigationParameters中的Add方法,以键值对的方式传递参数

 /// <summary>
 /// 改变显示用户控件
 /// </summary>
 /// <param name="ViewName"></param>
 private void ShowContentFun(string ViewName)
 {
     NavigationParameters paras = new NavigationParameters();
     paras.Add("MsgA", "大家好,我是A!"); //键值对
     paras.Add("MsgB", "大家好,我是B!");
     RegionManager.Regions["ContentRegion"].RequestNavigate(ViewName, paras);
 }

2.通过继承导航感知INavigationAware,实现接口接收参数

 /// <summary>
 /// 接收参数
 /// </summary>
 /// <param name="navigationContext"></param>
 /// <exception cref="NotImplementedException"></exception>
 public void OnNavigatedTo(NavigationContext navigationContext)
 {
     if (navigationContext.Parameters.ContainsKey("MsgA"))
     {
         Msg = navigationContext.Parameters.GetValue<string>("MsgA");
     }
 }

 /// <summary>
 /// 是否重用实例
 /// </summary>
 /// <param name="navigationContext"></param>
 /// <returns></returns>
 /// <exception cref="NotImplementedException"></exception>
 public bool IsNavigationTarget(NavigationContext navigationContext)
 {
     return true;
 }

 public void OnNavigatedFrom(NavigationContext navigationContext) { }

二、导航请求确认

1.继承IConfirmNavigationRequest接口实现ConfirmNavigationRequest

 public void ConfirmNavigationRequest(
     NavigationContext navigationContext,
     Action<bool> continuationCallback
 )
 {
     bool result = true;
     if (
         MessageBox.Show("确定切换吗?", "温馨提示", MessageBoxButton.YesNo)
         == MessageBoxResult.No
     )
         result = false;

     continuationCallback(result);
 }

三、回退

1.导航请求方法中添加导航回调参数,获取导航日志

 /// <summary>
 /// 导航日志
 /// </summary>
 private IRegionNavigationJournal journal;

/// <summary>
 /// 改变显示用户控件
 /// </summary>
 /// <param name="ViewName"></param>
 private void ShowContentFun(string ViewName)
 {
     NavigationParameters paras = new NavigationParameters();
     paras.Add("MsgA", "大家好,我是A!"); //键值对
     paras.Add("MsgB", "大家好,我是B!");
     RegionManager
         .Regions["ContentRegion"]
         .RequestNavigate(
             ViewName,
             (call) =>
             {
                 journal = call.Context.NavigationService.Journal;
             },
             paras
         );
 }

2.实现回退

/// <summary>
/// 回退方法
/// </summary>
/// <exception cref="NotImplementedException"></exception>
private void Back()
{
    if (journal != null && journal.CanGoBack)
        journal.GoBack();
}

 

posted @ 2025-05-12 22:14  昂昂呀  阅读(65)  评论(0)    收藏  举报