WPF - 简单的UI框架

article/2025/10/12 22:27:13

实现了一个简单的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>

 


http://chatgpt.dhexx.cn/article/kuQayC2N.shtml

相关文章

WPF真入门教程04--UI布局1

大家都知道&#xff1a;UI是做好一个软件很重要的因素&#xff0c;如果没有一个漂亮的UI&#xff0c;功能做的再好也无法吸引很多用户使用&#xff0c;而且没有漂亮的界面&#xff0c;那么普通用户会感觉这个软件没有多少使用价值。 WPF系统基于流布局的标准&#xff0c;开发人…

WPF UI界面控件篇

WPF UI界面控件篇 布局控件&#xff1a;是任何用户界面的基础&#xff0c;排列应用中的 UI 元素。 文本、按钮和图像等元素都需要规定自己位置和行为方式&#xff0c;构建基块称为“控件”&#xff0c;有时亦称为“元素”。 <Window x:Class"UsingLayoutsApp.Wpf.Mai…

WPF(一) WPF基本控件与布局

​ WPF&#xff08;Windows Presentation Foundation&#xff09;是微软推出的基于Windows的用户界面框架&#xff0c;中文译为“Windows呈现基础”&#xff0c;属于.NET Framework 3.0的一部分。WPF类似于WinForm技术框架&#xff0c;但是相比于WinForm&#xff0c;WPF对大部分…

WPF炫酷界面设计

一.效果展示&#xff08;多层次&#xff09; 二.制作流程 1.在vs2012中建立一个wpf程序 2.建立一个主页面&#xff08;.cs&#xff09;(注&#xff1a;C#程序每一个页面都由两个文件构成一个axml一个cs&#xff0c;一个前端文件一个后台文件) 3.在主页面中添加按钮&#xff0c;…

WPF界面设计工具---Blend学习(一)

文章目录 前言一.初用Blend之喜二.使用Blend1.Blend工具版本 前言 最近在空闲时间学习WPF界面设计工具Blend&#xff0c;之前写WPF的界面都是完全依靠手敲代码的方式&#xff0c;这种方式往往很低效率而且很难做到一些复杂的效果。比如动画&#xff0c;手敲代码实现动画的话&a…

C# WPF 一个设计界面

微信公众号&#xff1a;Dotnet9&#xff0c;网站&#xff1a;Dotnet9&#xff0c;问题或建议&#xff1a;请网站留言&#xff0c; 如果对您有所帮助&#xff1a;欢迎赞赏。 C# WPF 一个设计界面 今天正月初三&#xff0c;大家在家呆着挺好&#xff0c;不要忘了自我充电。 武汉…

WPF界面设计

目录 1.设计一个优美的注册界面1.实现效果2.代码展示 2.简易登录按钮设计1.实现效果2.代码展示 3.设计一个优美的注册登录界面&#xff08;连接数据库&#xff09;1.实现效果2.代码展示 4.设计一个简单的在线教育系统界面1.实现效果2.代码展示 5. 设计一个Dashboard1.实现效果2…

WPF实例系列一:登录、注册界面设计

WPF实例系列一&#xff1a;登录、注册界面设计 文章目录 WPF实例系列一&#xff1a;登录、注册界面设计前言一、实例演示1. 登录界面展示2. 注册界面展示3. 数据存储4. 效果演示 二、结构及源码1.主界面跳转登录界面设计2.登录界面设计3.注册界面设计4.Excel保存数据类设计5.源…

C# WPF界面设计参考 工控机上位机界面 美观炫酷的现代化风格界面设计实际案例分享 界面设计代码

1.动图效果展示 2.界面1 3.界面2 4.界面3 需要界面效果代码的可留言联系博主

WPF界面设计学习

github上发现了一个不错的项目&#xff1a; https://github.com/HenJigg/wpf-uidesign 还配有B站的学习视频&#xff1a; https://space.bilibili.com/32497462 看了这个项目&#xff0c;觉得自己学了这么多年的WPF&#xff0c;界面还设计的这么丑&#xff0c;顿时脸都不知道往…

C# WPF十个美观的界面设计展示

概述 很多时候&#xff0c;我们设计的界面总是感觉缺乏美感&#xff0c;不是我们不会开发好看的界面&#xff0c;而是不知道怎么才算美观&#xff0c;这时候我们不妨看看别人好的页面是怎么做的.下面展示一些我觉得做的比较好的cs界面&#xff0c;希望能给大家在平时做界面设计…

WPF|分享一个登录界面设计

分享一个登录界面&#xff0c;先看效果图&#xff1a; 准备 文中使用到了一些图标&#xff1a; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZsHcZCFv-1652400544809)(https://img1.dotnet9.com/2022/05/3402.png)] 我们可以从 iconfont免费下载…

行列式的意义

本文转自http://www.cnblogs.com/AndyJee/p/3491487.html 三、行列式的几何意义&#xff1a; 行列式的定义&#xff1a; 行列式是由一些数据排列成的方阵经过规定的计算方法而得到的一个数。当然&#xff0c;如果行列式中含有未知数&#xff0c;那么行列式就是一个多项式。它…

矩阵——对称行列式快解

1、先化成爪型行列式 2、再化成上三角或下三角 第一步&#xff1a;把第1行的1倍分别加至第2、3、4行&#xff0c;化为爪型行列式 第二步&#xff1a;把第2、3、4列的&#xff08;-1&#xff09;倍都加到第1列&#xff0c;化为上三角 第三步&#xff1a;得出结果

【线性代数】一、行列式和矩阵

一、行列式 文章目录 一、行列式1.1 行列式性质1.2 余子式行列式按照行列展开的展开公式 一、行列式求解1.用行列式2.用矩阵3.用特征值 1.3 行列式计算一、具体形行列式(1)直接运算1.行\列和相等类型2.爪形、异爪形行列式 (2)化为121个基本行列式1. 主副对角线行列式2. 拉普拉斯…

矩阵/行列式的意义

一、代数意义 矩阵乘法规则看起来比较复杂&#xff0c;不容易理解其乘法规则背后隐含的意义。现举一个例子说明矩阵乘法的意义。如下图所示&#xff0c;一个商店出售Beef pie&#xff0c;chicken pie&#xff0c;vegetable pie&#xff0c;其单价分别为3元&#xff0c;4元&…

矩阵的行列式、秩的意义

线性代数真是一个很抽象的东西&#xff0c;即使我们很多人都学过&#xff0c;但是我相信绝大部分的都不知道这是干嘛用的&#xff0c;找了不少资料&#xff0c;终于发现了这么一篇好文章&#xff0c;于是强烈希望可以和大家分享&#xff0c;帮助大伙进一步理解矩阵的行列式和秩…

线代第二章 矩阵 +行列式与矩阵的区别

行列式与矩阵的区别 一、 行列式是一个数&#xff0c;矩阵是一个表格。 &#xff08;行列式都是n阶的方阵&#xff0c;但矩阵不一定是方阵Ann&#xff0c;也可以是Amn&#xff09; 只有n阶矩阵Ann&#xff1a;才有对应的行列式|A|&#xff0c;才能计算对应行列式的模。 二、…

行列式和矩阵的区别

1&#xff0c;本质上 &#xff08;1&#xff09;行列式是一个数&#xff0c;一个值。当有未知数时就是一个表达式。 &#xff08;2&#xff09;矩阵是一个数表&#xff0c;一种数据结构&#xff0c;可以按照数据库表结构来理解&#xff0c;也可以理解成二维数组。 矩阵是不能…

线性代数 —— 矩阵的行列式

1.行列式 排成 n 阶方阵形式的 n^2 个数所确定的一个数称为 n 阶方阵 A 的行列式&#xff0c;记为&#xff1a;det(A) 或 |A| 一个 2x2 的矩阵的行列式可表示为&#xff1a; 2.余子式与代数余子式 将 n 阶行列式中元素 的第 i 行和第 j 列划去后&#xff0c;留下的 n-1 阶…