Prism 基础知识学习(三)导航功能

Prism 基础知识学习(三)导航功能

  1. 自动匹配(AutoWireViewModel)

    在View文件中加入下面代码,让View与对应的ViewModel自动绑定

xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"

  1. 手动设置。在Module的配置文件中修改RegisterTypes对应关系。

    public class ModuleAModule : IModule
    {
        public void OnInitialized(IContainerProvider containerProvider)
        {
    
        }
    
        public void RegisterTypes(IContainerRegistry containerRegistry)
        {
            containerRegistry.RegisterForNavigation<ViewA, ViewAViewModel>();
        }
    }
    
    
  2. 导航字典功能。

    在MainViewModels 中添加导航参数,然后在ViewA中进行接收

    MainWindowViewModel.cs

         private void Open(string obj)
         {
             NavigationParameters keys = new NavigationParameters();
             keys.Add("Title", "Hello!");
    
             regionManager.Regions["ContentRegion"].RequestNavigate(obj, keys);
         }
    
    

​ 然后在ViewAViewModel.cs

    public class ViewAViewModel :BindableBase, IConfirmNavigationRequest
    {
        private string title;

        public string Title
        {
            get { return title; }
            set { title = value; }
        }


        public ViewAViewModel()
        {
        }

        /// <summary>
        /// 每次重新导航的时候,是否重用原来的实例
        /// </summary>
        /// <param name="navigationContext"></param>
        /// <returns></returns>
        public bool IsNavigationTarget(NavigationContext navigationContext)
        {
            return true;
        }

        public void OnNavigatedFrom(NavigationContext navigationContext)
        {
            
        }

        public void OnNavigatedTo(NavigationContext navigationContext)
        {
            Title= navigationContext.Parameters.GetValue<string>("Title");
        }

        /// <summary>
        /// 是否允许切换到下一个界面
        /// </summary>
        /// <param name="navigationContext"></param>
        /// <param name="continuationCallback"></param>
        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
        {
            bool result = true;
            if (MessageBox.Show("确认导航?", "温馨提示", MessageBoxButton.YesNo) == MessageBoxResult.No)
                result = false;
            continuationCallback(result);
        }
posted @   聆听微风  阅读(161)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示