实现了一个简单的WPF应用程序UI框架 ,分享出来。界面效果图如下:

运行效果如下:

打算持续更新,将左侧面板所有功能模块全给实现了。

喜欢的可以下载源码体验:https://github.com/DuelWithSelf/WPFEffects

左侧分类导览按钮为自定义的CustomControl, 参照ListBox的模式。 为了偷懒,暂时未深度封装,先用StackPanel承载,先用上再说,效果还不错

 <StackPanel x:Name="SpNavItems"><CustomFrms:ListMenuBox Text="组件" IconData="{StaticResource PathData.SettingsOutline}"><CustomFrms:ListMenuItem Text="PathIcon" Key="PathData"/></CustomFrms:ListMenuBox><CustomFrms:ListMenuBox Text="效果" IconData="{StaticResource PathData.Creation}"><CustomFrms:ListMenuItem Text="文字效果" Key="TextblockEffect"/></CustomFrms:ListMenuBox><CustomFrms:ListMenuBox Text="富媒体墙" IconData="{StaticResource PathData.Clover}"><CustomFrms:ListMenuItem Text="弧形旋转" Key="Carousel"/><CustomFrms:ListMenuItem Text="弧形旋转3D" Key="Carousel3D"/><CustomFrms:ListMenuItem Text="线点动画" Key="AnimLine"/></CustomFrms:ListMenuBox><CustomFrms:ListMenuBox Text="图表" IconData="{StaticResource PathData.ChartScatterplotHexbin}"><CustomFrms:ListMenuItem Text="柱状图" Key="HistogramChart"/><CustomFrms:ListMenuItem Text="饼状图" Key="PieChart"/><CustomFrms:ListMenuItem Text="弧形图" Key="RadianChart"/></CustomFrms:ListMenuBox><CustomFrms:ListMenuBox Text="图像处理" IconData="{StaticResource PathData.FileImageRegular}"><CustomFrms:ListMenuItem Text="图片分隔" Key="ImgCoordinate"/></CustomFrms:ListMenuBox><CustomFrms:ListMenuBox Text="性能优化" IconData="{StaticResource PathData.BroomSolid}"><CustomFrms:ListMenuItem Text="图片加载建议" Key="ImagePerformance"/><CustomFrms:ListMenuItem Text="图片加载反例" Key="ImagePerformance2"/></CustomFrms:ListMenuBox></StackPanel>

自定义的样式:

<Style TargetType="{x:Type CustomFrms:ListMenuBox}"><Setter Property="IconWidth" Value="14"/><Setter Property="IconHeight" Value="14"/><Setter Property="FontSize" Value="14"/><Setter Property="NormalBrush" Value="{StaticResource ColorBrush.MiddleWhite}"/><Setter Property="FocusBrush" Value="White"/><Setter Property="BorderBrush" Value="White"/><Setter Property="FocusBackground" Value="{StaticResource ColorBrush.LightWhite}"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type CustomFrms:ListMenuBox}"><Border x:Name="Part_BdrContainer" Background="{TemplateBinding Background}"BorderBrush="{TemplateBinding BorderBrush}"BorderThickness="{TemplateBinding BorderThickness}"><Grid><Grid x:Name="Part_Header" Height="40" Background="Transparent" VerticalAlignment="Top"><Path x:Name="Part_Icon" Margin="15,0,0,0" Width="{Binding Path=IconWidth, RelativeSource={RelativeSource TemplatedParent}}"Height="{Binding Path=IconHeight, RelativeSource={RelativeSource TemplatedParent}}"Data="{Binding Path=IconData, RelativeSource={RelativeSource TemplatedParent}}"Fill="{Binding Path=NormalBrush, RelativeSource={RelativeSource TemplatedParent}}"Stretch="Fill" HorizontalAlignment="Left" VerticalAlignment="Center"/><TextBlock x:Name="Part_Title" Padding="{Binding Path=TextPadding, RelativeSource={RelativeSource TemplatedParent}}"FontSize="{Binding Path=FontSize, RelativeSource={RelativeSource TemplatedParent}}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="50,0,0,0"Foreground="{Binding Path=NormalBrush, RelativeSource={RelativeSource TemplatedParent}}"Text="{Binding Path=Text, RelativeSource={RelativeSource TemplatedParent}}"/><Path x:Name="Part_Arrow" Data="M0,20 L10,10 L0,0 L0,1 L9,10 L0,19 L0,20 V20 H10 Z"Width="6" Height="12" Stretch="Fill" Fill="{Binding Path=NormalBrush, RelativeSource={RelativeSource TemplatedParent}}" HorizontalAlignment="Right" Margin="0,0,15,0" VerticalAlignment="Center"><Path.RenderTransform><TransformGroup><RotateTransform Angle="0"/></TransformGroup></Path.RenderTransform></Path></Grid><StackPanel x:Name="Part_ItemsContainer" Margin="0,40,0,0" Height="0"><ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/></StackPanel></Grid></Border><ControlTemplate.Triggers><Trigger Property="IsExpanded" Value="True"><Setter TargetName="Part_Icon" Property="Fill" Value="{Binding Path=FocusBrush, RelativeSource={RelativeSource TemplatedParent}}"/><Setter TargetName="Part_Title" Property="Foreground" Value="{Binding Path=FocusBrush, RelativeSource={RelativeSource TemplatedParent}}"/><Setter TargetName="Part_Arrow" Property="Fill" Value="{Binding Path=FocusBrush, RelativeSource={RelativeSource TemplatedParent}}"/><Setter TargetName="Part_BdrContainer" Property="Background" Value="{Binding Path=FocusBackground, RelativeSource={RelativeSource TemplatedParent}}"/><Setter TargetName="Part_BdrContainer" Property="BorderThickness" Value="2,0,0,0"/></Trigger><Trigger Property="IsMouseOver" Value="True"><Setter TargetName="Part_Icon" Property="Fill" Value="{Binding Path=FocusBrush, RelativeSource={RelativeSource TemplatedParent}}"/><Setter TargetName="Part_Title" Property="Foreground" Value="{Binding Path=FocusBrush, RelativeSource={RelativeSource TemplatedParent}}"/><Setter TargetName="Part_Arrow" Property="Fill" Value="{Binding Path=FocusBrush, RelativeSource={RelativeSource TemplatedParent}}"/><Setter TargetName="Part_BdrContainer" Property="Background" Value="{Binding Path=FocusBackground, RelativeSource={RelativeSource TemplatedParent}}"/><Setter TargetName="Part_BdrContainer" Property="BorderThickness" Value="2,0,0,0"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter>
</Style>

WPF - 简单的UI框架相关推荐

  1. 简单的UI框架 | 一、UI界面的搭建

    简单的UI框架 UI界面的搭建 文章目录 简单的UI框架 前言 一.UI资源的导入 二.游戏主界面设置 1.背景设置 2.游戏主玩法图标按钮 3.游戏主玩法界面 4.预制体 总结 前言 本文将会学习到 ...

  2. 设计一个简单的UI框架,实现不同模块之间相互转换,使用单例实现。

    实现不同模块或窗口的互相切换,其实用一些代码都可以实现,但是使用UI框架不仅方便后续修改添加删除,同时在做出扩展效果时,也可以快速实现.由于我还是学生,这些搭建UI的材料都是以前玩的一些小游戏里面,比 ...

  3. wpf ui框架_RapidCAX 开源UI框架

    微信公众号:AnyCAD专注打造新一代图形平台,助每一个工业软件成功! RapidCAX UI框架 从零开始搭建CAD/CAE/CAM的UI框架是一件繁琐的事情:需要选组件.集成组件以及各种配置.若集 ...

  4. Vue CLI 3结合Lerna进行UI框架设计

    第一次在掘金发文章,有点啰里啰嗦,大家见谅. 当前大部分UI框架设计的Webpack配置都相对复杂,例如Element.Ant Design Vue和Muse-UI等Vue组件库.例如Element, ...

  5. ui动效 unity_简易 Unity3D UI 框架

    看见一篇介绍 Unity3D UI 框架编写的文章,并且给出了示例代码.然后去了解了一下.讲道理,示例代码蛮乱的,不知道有一些是不是直接从项目代码拷贝然后简单修改,对于一个简单的框架来说,有很多不必要 ...

  6. 2015最流行的Android组件、工具、框架大全 UI框架大全

    Android 是目前最流行的移动操作系统之一. 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生了一大批的优秀的组件. 本文试图将目前流行的组件收集起来以 ...

  7. wpf ui框架_.NET跨平台框架Avalonia UI

    转自:TwilightLemoncnblogs.com/TwilightLemon/p/13474796.html 前言 Avalonia 是一个跨平台的.NET UI框架,支持 Windows.Li ...

  8. WPF随笔(一)--UI框架MahApps.Metro的使用

    WPF随笔(一)--UI框架MahApps.Metro的使用 写在前面 WPF的界面特性 如何使用MahApps.Metro 如何使用MahApps.Metro模板 后记 写在前面 使用WPF开发窗体 ...

  9. Laya:基于Prefab的简单UI框架。

    UI框架的功能: 方便快捷的对UI界面进行管理:如快速打开与关闭一个界面,防止相同界面多开等等. 核心代码有2个脚本,一个UIMgr,一个UIBase. UIMgr的功能是管理UI界面. UIBase ...

最新文章

  1. ffmpeg 基本数据结构和对象: AVPacket、AVPicture、AVFrame
  2. 开源 java CMS - FreeCMS2.3 会员组管理
  3. javase 超市库存系统
  4. rsync 备份服务搭建(完成)
  5. java和C操作数组的一个小区别
  6. 12家国内外之名公司多场面试,微软到谷歌.让我们通过学习达到100%面试率与100%通过率...
  7. 3月上旬我国域名增长平稳 新增92059个域名
  8. 平流式隔油池计算_海淀区平流式隔油池厂家供货
  9. opencv空间色彩转换
  10. 图解DotNet框架之一:编译与执行引擎(上)
  11. PHP-----文件系统的交互
  12. 用核废料制成“钻石电池”,不充电能让汽车跑100年?
  13. 周期性的方波 matlab,matlab产生方波脉冲和周期性方波信号 - 副本
  14. python编写年金终值函数_财码Python管理会计小实验—投融资管理之货币时间价值...
  15. 国外著名大学计算机教学考察随笔
  16. hdu6105(博弈)
  17. 单播、广播、多播(组播)的概念和区别
  18. LoRa码元、码片、信号带宽、编码率等解析
  19. js验证组织机构代码
  20. 04.Nginx代理(学习)

热门文章

  1. 心之所向,百炼成钢 第一章
  2. 2017年总结(补全)
  3. Android Studio Error:前言中不允许有内容
  4. 用django实现一个资产管理的系统
  5. 计算机名打印机无法共享,win10系统打印机无法共享的解决方案
  6. 10款可视化大屏特效,酷炫又内涵!
  7. 各类工控软件图库(组态王,威纶通,西门子,昆仑通泰等通用
  8. 电子学会青少年软件编程Python编程等级考试一级真题解析(选择题+判断题)2022年6月
  9. 设置非阻塞socket收发数据
  10. (总结)什么是HTML语义化