README.md

    TerminalMACS

    注意: 此项目只用于存放一些测试代码,逐渐沦为一个大杂烩仓库,请谨慎star。

    1. 刚开始的规划是做一个多平台的监控开源项目,做着做着就变成一个demo集合项目了。
    2. 不定期的更新.NET最新版本,目前是 .NET 7,不做历史版本保留,抱歉。
    3. 现在此项目的目标只是做学习和积累。

    0. 简介

    一个使用 Prism 作为模块化框架、基于多个开源控件库作为UI控件选择、集成开源 UI 界面设计的 .NET 7 WPF 客户端项目。

    1. 特性

    • 使用 .NET 7 开发,体验最新 .NET 平台

    .NET是免费,跨平台,开源的,用于构建所有应用的开发人员平台。

    • 基于 Prism 8 搭建模块化框架,方便程序扩展

    Prism为程序设计提供指导,旨在帮助用户更加容易的设计和构建丰富、灵活、易于维护WPF桌面应用程序。Prism使用设计模式(如MVVM,复合视图,事件聚合器),帮助你创建一个松耦合的程序。遵循这些设计模式原则,将目标程序解耦成独立的模块。这些类型的应用程序被称为复合应用程序。

    • 已使用或即将使用到多个开源WPF控件库

    多种开源 WPF UI 库选择,开发 WPF 项目更方便:MaterialDesignInXamlToolkitHandyControlPanuonUI.SilverAduSkin

    • ECharts

    ECharts:pie-doughnut

    • 本地化支持

    • 动态国际化支持

    • 支持主题色动态切换

    2. 支持环境

    • .NET 7.0。
    • Visual Studio 2022

    3. 当前版本

    0.1

    4. 链接

    官方网站

    5. 项目界面截图

    5.1. 关于

    关于TerminalMACS

    5.2. 首页模块

    5.3. 服务端模块

    5.4. 客户端模块

    5.5. 测试案例

    收集全球优秀的开源WPF界面设计

    以下为2022年收集的案例

    2022年05月23日 新手引导(MVVM版本)

    2022年05月20日 新手引导

    2022年05月16日 登录界面5 界面设计

    2022年05月14日 黑暗模式的钱包支付仪表盘界面设计

    2022年05月11日 如何在 WPF 中设计漂亮的社交媒体信息仪表板

    2022年05月10日 一个比较摩登的登录界面


    以下为2022年之前的收集。

    登录注册分类 1

    1. 简单登录窗体设计1

    参考视频:C# WPF Material Design UI: Login Window

    参考源码:Login2

    简单登录窗体设计1

    1. 简单登录窗体设计2

    参考视频:C# WPF Material Design UI: Login Window

    参考源码:Login1

    简单登录窗体设计2

    1. 美食应用登录

    参考视频:WPF Food App Login UI Material Design [Speed Design]

    美食应用登录

    菜单类 2

    1. 抽屉式菜单1

    参考视频:C# WPF Material Design UI: Animated Colorful Navigation Drawer

    参考源码:AnimatedColorfulMenu

    抽屉式菜单1

    1. 抽屉式菜单2

    参考视频:WPF - Navigation Drawer / Sidebar Menu | UI Design | C# |

    参考源码:Navigation-Drawer-Sidebar-Menu-in-WPF

    抽屉式菜单2

    1. 菜单切换用户控件

    参考视频:C# WPF Material Design UI: Fast Food Sales

    参考源码:Pizzaria1

    菜单切换用户控件

    1. 菜单切换动画

    参考视频:C# WPF Material Design UI: Animated Menu

    参考源码:AnimatedMenu1

    菜单切换用户控件

    其他界面设计 3

    1. 移动应用仪表盘

    参考视频:WPF Dashboard UI – Material Design [Speed Design]

    参考源码:WPF-Dashboard-UI-Material-Design-Concept

    移动应用仪表盘

    1. 简易仪表盘2

    参考视频:WPF Dashboard UI – Material Design [Speed Design]

    参考源码:WPF-Dashboard-UI-Material-Design-Concept

    ECharts:pie-doughnut

    简易仪表盘2

    1. Instagram重新设计

    参考视频:C# WPF Material Design UI: Redesign Instagram

    参考源码:Instagram

    Instagram重新设计

    1. LoLGoal

    参考视频:dotnet9

    参考源码:dotnet9

    LoLGoal

    1. 简易音乐播放器1

    参考视频:C# WPF Material Design UI: Dashboard

    参考源码:Dashboard

    简易音乐播放器1

    1. 百度地图

    百度地图

    1. 聊天界面设计

    参考视频:

    参考源码:Chat

    聊天界面设计

    1. 计算器

    参考视频:

    计算器

    更新记录

    2020-11-15 添加快捷应用:src\Tools\QuickApp

    参考开源项目:

    https://github.com/yanjinhuagood/SoftWareHelper

    文章

    https://www.cnblogs.com/yanjinhua/p/13896894.html

    Dotnet9站点介绍文章:https://dotnet9.com/16722.html

    快捷应用

    功能:

    1. 菜单通过配置文件配置,因为操作系统可能装了太多应用,不需要全部加载。

    后面计划改成sqlite数据库存储:

    {
      "IsPowerOn": true,
      "MenuItemInfos": [
        {
          "FilePath": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
          "IconPath": null,
          "Name": "Google Chrome",
          "Type": 0
        },
        {
          "FilePath": "https://dotnet9.com/",
          "IconPath": "logo.png",
          "Name": "Dotnet9",
          "Type": 1
        },
        {
          "FilePath": "mstsc /v:192.168.1.133",
          "IconPath": "shell.png",
          "Name": "192.168.1.133",
          "Type": 2
        }
      ]
    }
    1. 支持exe拖拽(或者系统生成的快捷方式拖拽)添加。
    private void Grid_Drop(object sender, DragEventArgs e)
    {
        try
        {
            var fileName = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();
            MenuItemInfo menuItem = new MenuItemInfo() { FilePath = fileName };
    
            // 快捷方式需要获取目标文件路径
            if (fileName.ToLower().EndsWith("lnk"))
            {
                WshShell shell = new WshShell();
                IWshShortcut wshShortcut = (IWshShortcut)shell.CreateShortcut(fileName);
                menuItem.FilePath = wshShortcut.TargetPath;
            }
            ImageSource imageSource = SystemIcon.GetImageSource(true, menuItem.FilePath);
            System.IO.FileInfo file = new System.IO.FileInfo(fileName);
            if (string.IsNullOrWhiteSpace(file.Extension))
            {
                menuItem.Name = file.Name;
            }
            else
            {
                menuItem.Name = file.Name.Substring(0, file.Name.Length - file.Extension.Length);
            }
            menuItem.Type = MenuItemType.Exe;
    
            if (ConfigHelper.AddNewMenuItem(menuItem))
            {
                var btn = AddMenuItem(menuItem);
                fishButtons.Children.Add(btn);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    
    private void Grid_DragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop))
        {
            e.Effects = DragDropEffects.Link;
        }
        else
        {
            e.Effects = DragDropEffects.None;
        }
    }
    {
      "FilePath": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
      "IconPath": null,
      "Name": "Google Chrome",
      "Type": 0
    }
    1. 支持网址配置(点击打开指定网址,类似网页收藏快捷方式)。
    {
      "FilePath": "https://dotnet9.com/",
      "IconPath": "logo.png",
      "Name": "Dotnet9",
      "Type": 1
    }
     else if (menuItem.Type == MenuItemType.Web)
    {
        Process.Start(new ProcessStartInfo("cmd", $"/c start {menuItem.FilePath}")
        {
            UseShellExecute = false,
            CreateNoWindow = true
        });
    }
    1. 支持cmd命令配置(比如系统应用mstsc,远程桌面配置目标IP及端口,一键打开连接等)
    {
      "FilePath": "mstsc /v:192.168.1.133",
      "IconPath": "shell.png",
      "Name": "192.168.1.133",
      "Type": 2
    }
    else if( menuItem.Type == MenuItemType.Cmd)
    {
        Process p = new Process();
        p.StartInfo.FileName = "cmd";
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardInput = true;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.RedirectStandardError = true;
        p.StartInfo.CreateNoWindow = true;
        p.Start();
    
        p.StandardInput.WriteLine($"{menuItem.FilePath} &exit");
        p.StandardInput.AutoFlush = true;
        p.WaitForExit();
        p.Close();
    }
    1. ☒提供界面配置菜单
    2. ☒显示图标与文字 ...更多想法还在想

    2020-11-16 添加DotNetty服务端与客户端:src\Tools\NettyTest

    公司项目有使用到DotNetty与java端Netty项目通信,所以花时间整了这个demo,打算一直维护下去。

    功能:

    • 服务端和客户端都采用 C# + WPF开发

    项目简介

    发行版本

    当前项目没有发行版本

    贡献者 3

    开发语言

    • JavaScript 64.5 %
    • C# 35.1 %
    • HTML 0.3 %
    • CSS 0.1 %
    • C 0.0 %