zoukankan      html  css  js  c++  java
  • 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>();

            }

        }

  • 相关阅读:
    set与map
    统计一个字符串中出现了多少个不同的字符
    求序列中所有不同的连续子串的数量
    79、idea IDE Eval Reset
    78、idea控制台报 java: 无效的目标发行版: 14
    16、docker安装minio
    77、idea中添加maven项目右侧无maven
    76、mysql5.7安装教程
    74、js向上递归
    72、解决IntelliJIDEA没有Spring Initializr
  • 原文地址:https://www.cnblogs.com/bruce1992/p/15111945.html
Copyright © 2011-2022 走看看