• C# prism 框架


    定义Region (RegionManager)

    定义Region 的方式有两种,一个是在XMAL界面指定,另一种这是代码当中指定。

    RegionManager.RegionName(XMAL)

    RegionManager.SetRegionName (Code)

    RegionManager 除了定义区域,还有一下功能:

    维护区域集合

    提供对区域的访问

    合成视图

    区域导航

    定义区域

    -----------------------------------------------------------------------------------

    xml 文件

     <ContentControl prism:RegionManager.RegionName="ContentRegion" />

    C# code

    public MainWindow(IRegionManager regionManager)
    {
    InitializeComponent();
    _regionManager = regionManager;
    _regionManager.RegisterViewWithRegion("MainStack", typeof(Login));
    this.Loaded += MainWindow_Loaded; this.Loaded += MainWindow_Loaded;
    }

    ---------------------

    自定义adapter

    public class StackPanelAdapter : RegionAdapterBase<StackPanel>
    {
      protected StackPanelAdapter(IRegionBehaviorFactory regionBehaviorFactory):base(regionBehaviorFactory)
      {

      }
      protected override void Adapt(IRegion region, StackPanel regionTarget)
      {

        region.Views.CollectionChanged += (s, e) =>
        {
          if(e.Action==System.Collections.Specialized.NotifyCollectionChangedAction.Add)
          {
            foreach( FrameworkElement item in e.NewItems)
            {
              regionTarget.Children.Add(item);
            }

          }
        };

       }

      protected override IRegion CreateRegion()
      {
        return new Region();
      }
    }

    app  code 注册Adaptor

       public partial class App

        {

            protected override Window CreateShell()

            {

                return Container.Resolve<MainWindow>();

            }

            protected override void RegisterTypes(IContainerRegistry containerRegistry)

            {

                // containerRegistry.RegisterForNavigation<Login>();

                //containerRegistry.RegisterForNavigation<CreateAccount>();

            }

            protected override void ConfigureRegionAdapterMappings(RegionAdapterMappings AdapterMappings)

            {

                base.ConfigureRegionAdapterMappings(AdapterMappings);

                AdapterMappings.RegisterMapping(typeof(StackPanel),Container.Resolve<StackPanelAdapter>());

            }

        }

    -----------------------------------------

    页面的跳转

    protected override void RegisterTypes(IContainerRegistry containerRegistry)
    {
      containerRegistry.RegisterForNavigation<PageA>();
      containerRegistry.RegisterForNavigation<PageB>();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
      _regionManager.RequestNavigate("MainRegion", "PageA");
    }

    module 的使用

    public class MainModuleModule : IModule
    {
      public void OnInitialized(IContainerProvider containerProvider)
      {
        var _RegionManager=containerProvider.Resolve<IRegionManager>();
        var region= _RegionManager.Regions["MainRegion"];

        region.RequestNavigate("ViewA");
      }

      public void RegisterTypes(IContainerRegistry containerRegistry)
      {
        containerRegistry.RegisterForNavigation<ViewA>();
      }
    }

    --------------------------------------------------------------------------------------------

     public partial class App

        {

            protected override Window CreateShell()

            {

                return Container.Resolve<MainWindow>();

            }

            protected override void RegisterTypes(IContainerRegistry containerRegistry)

            {

                containerRegistry.RegisterForNavigation<PageA>();

                containerRegistry.RegisterForNavigation<PageB>();

            }

            protected override void ConfigureRegionAdapterMappings(RegionAdapterMappings AdapterMappings)

            {

                base.ConfigureRegionAdapterMappings(AdapterMappings);

                AdapterMappings.RegisterMapping(typeof(StackPanel),Container.Resolve<StackPanelAdapter>());

            }

            protected override IModuleCatalog CreateModuleCatalog()

            {

                return new ConfigurationModuleCatalog(); //目录创建于配置文件

            }

            protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)

            {

                moduleCatalog.AddModule<MainModule.MainModuleModule>();

            }

        }

  • 相关阅读:
    C# 单点登录
    长度12的数组,要求对数据分为3组,每组数据对应位置的数字为前几位的和,并返回12位数组
    react项目初始化
    vue 过滤器的使用(解决forEach遇到的问题)
    nuxt中less使用
    vue项目less 使用
    Webpack中的sourceMap配置
    webpack 同一文件打包两次生成两个文件
    webpack---图片打包前和打包后名称一致的配置
    The computed property "userName" is already defined in data.
  • 原文地址:https://www.cnblogs.com/bruce1992/p/15111945.html
Copyright © 2020-2023  润新知