服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C# CM框架实现多页面管理的实例代码

C# CM框架实现多页面管理的实例代码

2023-02-21 15:58zls366 C#

这篇文章主要介绍了C# CM框架下一行代码实现多页面管理,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

概述

之前我分享过一个wpf的项目实践,主页面左侧是个listbox,每次选择改变后呈现对应的页面,界面图如下

C# CM框架实现多页面管理的实例代码

要实现这样一个功能,我之前是采用传统方式实现的,本节我采用CM框架下的Conductor<T>去实现,这样代码量可以大幅度压缩,核心代码就一行。

传统方式

后台代码:①定义集合并添加数据:

?
1
2
3
public IViewModel ActiveWindowView { get; set; }
       public ObservableCollection<string> ListBoxItems { get; set; }
       public string SelectedItem { get; set; }
?
1
2
3
4
5
6
7
8
ListBoxItems = new ObservableCollection<string>() { };
           ListBoxItems.Add("ShellView");
           ListBoxItems.Add("EventAggregatorView");
           ListBoxItems.Add("ConductorView");
           ListBoxItems.Add("MatchTemplateView");
           ListBoxItems.Add("IndicatorLightView");
           ListBoxItems.Add("MemorandumView");
           ListBoxItems.Add("FTPTestView");

  ②listbox选择改变后切换页面:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public void ListBoxItems_SelectionChanged()
       {
          switch(SelectedItem)
           {
               case "ShellView":
                   ActiveWindowView = new ShellViewModel();break;
               case "EventAggregatorView":
                       ActiveWindowView = EventAggregatorViewModel.Instance; break;
               case "ConductorView":
                   ActiveWindowView = new ConductorViewModel(); break;
               case "MatchTemplateView":
                   ActiveWindowView = new MatchTemplateViewModel(); break;
               case "IndicatorLightView":
                   ActiveWindowView = new IndicatorLightViewModel(); break;
               case "MemorandumView":
                   ActiveWindowView = IoC.Get<MemorandumViewModel>(); break;
               case "FTPTestView":
                   ActiveWindowView = new FTPTestViewModel(new FTPConfig()); break;
               default:break;
           }
       }

  ③前台绑定:

?
1
2
3
<ListBox Name="ListBoxItems" Grid.Column="0" SelectedItem="{Binding SelectedItem}" Margin="2"
                 cal:Message.Attach="[Event SelectionChanged] = [Action ListBoxItems_SelectionChanged]"/>
            <ContentControl Name="ActiveWindowView"/>

利用CM框架下Conductor<T>实现

① 后台代码:首先是需要继承Conductor<IViewModel>.Collection.OneActive这样才能使用这个类下面的方法和属性,其次是构造函数需要添加接收的接口IEnumerable<T>,这样改造完代码如下:

?
1
2
3
4
5
public MainWindowViewModel(IEnumerable<IViewModel> modules)
      {
          Items.AddRange(modules);
          ActivateItem(Items.FirstOrDefault(vm => vm.GetType() ==typeof(IndicatorLightViewModel)));
      }

  如果不考虑首次激活的页面那核心代码就只有一句:

Items.AddRange(modules);

②前台代码:

?
1
2
<ListBox Name="Items" Grid.Column="0"  Margin="2" DisplayMemberPath="DisplayName"/>
 <ContentControl Name="ActiveItem"/>

这样前后台就设置完事了,继承了一个框架的多屏幕管理类,使得前后台代码大幅度精简,功能上也没打折扣,准确说是更强大了,这就是CM框架的优势所在。

到此这篇关于C# CM框架下一行代码实现多页面管理的文章就介绍到这了,更多相关C# CM框架多页面管理内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/zls366/archive/2022/03/12/15997282.html

延伸 · 阅读

精彩推荐
  • C#详解C#异步多线程使用中的常见问题

    详解C#异步多线程使用中的常见问题

    本文主要介绍了C#异步多线程使用中的常见问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    菜鸟厚非9932022-12-15
  • C#C#直线的最小二乘法线性回归运算实例

    C#直线的最小二乘法线性回归运算实例

    这篇文章主要介绍了C#直线的最小二乘法线性回归运算方法,实例分析了给定一组点,用最小二乘法进行线性回归运算的实现技巧,具有一定参考借鉴价值,需要...

    北风其凉9082021-10-18
  • C#C# Base 64 编码/解码实现代码

    C# Base 64 编码/解码实现代码

    这篇文章主要介绍了C# Base 64 编码/解码实现代码,需要的朋友可以参考下...

    C#教程网4642021-11-14
  • C#解决unity rotate旋转物体 限制物体旋转角度的大坑

    解决unity rotate旋转物体 限制物体旋转角度的大坑

    这篇文章主要介绍了解决unity rotate旋转物体 限制物体旋转角度的大坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    aldonaletto9922022-11-12
  • C#C#学习笔记之飞行棋项目

    C#学习笔记之飞行棋项目

    这篇文章主要为大家详细介绍了C#控制台实现飞行棋项目,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Light_Laser11042022-11-25
  • C#C#创建简单windows窗体应用(加法器)

    C#创建简单windows窗体应用(加法器)

    这篇文章主要为大家详细介绍了C#创建一个简单windows窗体应用的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    艾登皮尔斯12002022-07-14
  • C#Unity中的Tilemap流程分析

    Unity中的Tilemap流程分析

    这篇文章给大家介绍Unity中的Tilemap流程分析,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友...

    boynextdoor9272022-11-24
  • C#带你一文了解C#中的Expression

    带你一文了解C#中的Expression

    c#中有Expression,即表达式,通过Expression可以动态构造代码,并编译执行,下面这篇文章主要给大家介绍了关于C#中Expression的相关资料,需要的朋友可以参考下...

    RyzenAdorer11182022-12-13