- 博客(204)
- 资源 (5)
- 收藏
- 关注
原创 WPF基础权限系统
WPF 基础权限系统,是一个支持前后端分离设计的 客户端(C/S)项目,该示例项目前端xaml使用UI库 ,来构建用户界面,确保界面的美观和实用同时结合 Prism 框架,Prism框架不仅提供了基础的属性通知绑定命令操作消息聚合器(发布和订阅)等核心功能,还拥有一系列强大的附加特性,包括区域管理模块化支持、灵活的导航机制以及会话服务等.这些特性极大的提升项目的可维护性和可扩展性。
2024-10-16 17:04:02 613
原创 WPF DataGrid 列表中,DataGrid.Columns 列根据不同的值显示不同内容
需求:在WPF DataGrid 控件中,有以下列,绑定了一个LogType,值分别是0,1,2,根据不同的值,显示不同的内容以及背景最终效果图如下:2.接下来,我们需要定义两个转换器( 和 ),用于根据 LogType 的值来设置背景颜色和显示文本。2.1 转换器实现2.2 转换器实现3.将转换器,添加到资源字典中在你的 用户控件中,需要将转换器添加到资源字典中,以便在数据模板中使用。添加代码如下:这样就完成了 LogType 列的自定义显示。根据 LogType 的值,可以看到不
2024-09-14 09:46:35 810
原创 C# 使用 NLog 输出日志到文件夹
通过设置 ·maxArchiveDays·,可以实现自动管理日志文件的归档和清理,避免日志文件过多导致存储空间的浪费。=“5242880”: 文件归档大小尺寸,如果单文凭超过 5242880,则重新创建一个新的文件。或者创建一个共用的写日志静态类,需要输出日志的代码逻辑处,通过调用当前静态类即可。: 这些设置确保文件可以在多个进程中安全写入,同时不保持文件句柄打开。: 日志文件归档使用滚动编号,避免创建大量的备份文件。: 这表示每天生成一个新的日志文件。的文件夹,并在其中创建。属性:日志内容输出的模板。
2024-08-04 09:23:58 821
原创 Python OS模块操作文件
由于os模块,只能删除一级目录并且只能删除空的文件夹目录。如果要删除多级目录并且是非空的目录,就需要使用。,返回一个迭代器对象。由于 scandir 模块返回的是一个迭代对象,需要用 上下文管理器。在Python中,可以使用 os 模块主要对文件进行重命名,删除等一些操作。方式一 直接使用 os模块的。方式二 使用 os 模块中的。配合使用,以便资源的管理释放。遍历出 D 盘文件夹目录。
2024-08-03 16:50:25 481
原创 Python 模块导入方式
当前导入方式,容易与当前执行文件中的名称空间的名字冲突。并且如果导入函数的相同,后面导入的会覆盖前面的导入。2.如果当前目录搜索不到,就到Python 中的环境变量的路径中搜索. 查找环境变量命令: 导入。3.以都搜索不到,就到当前Pyhton 默认安装路径下面的第三方模块安装位置里面去搜索 (即。表示要导入使用的函数,不同的函数之间使用 ,(逗号)隔开。也就是别名的方式,给模块取个自定义的别名。在Python 中,导入外部模块有2种方式。如果导入的模块名称很长,可以使用。以 Pyhton 自带的。
2024-07-20 20:28:27 422
原创 Python 文件读写
文件读写操作一般步骤,打开文件(需要指定打开的文件路径,文件读写模式,和编码格式,默认编码是GBK),读写文件,关闭文件(在关闭文件的时候,就会自动保存到磁盘上面去了。使用 with 语句,不管在处理文件过程中是否发生异常,with 语句都能保证执行完毕后,会自动释放打开的关联的文件对象。以 rb 模式打开一个文件,并以二进制的格式进行读取,拿到数据后,进行二进制数据解码。以 wb 模式打开一个文件,并以二进制的格式进行写入,同时指定编码格式。文件定位,指的是获取当前文件指针读取到的位置,也就是光标位置。
2024-07-16 16:57:33 469
原创 Python 使用__slots__来限制实例动态添加属性
在Python中,是可以随便在对象实例中动态添加属性的。那么,怎么样可以防止其他人在调用类实例的时候胡乱添加属性和方法?那如果再动态添加其他属性,例如:添加一个 school 属性,则会添加失败。创建 Person 实例对象,进行属性添加。变量中设置能动态添加的两个属性,name 和 age。也就是当前的 Person 实例对象,除了能添加在。变量中的属性才能被动态添加,否则会添加失败。例如,创建一个 Person 类,通过在。变量中设置的属性外,其他属性将会添加失败。
2024-07-08 20:57:25 412
原创 Python 访问和设置私有属性
类中通过定义实例方法,并且要去调用实例方法才能对私有属性进行访问或修改。那么我们还有没有其他方式?不用去调用实例方法,而是通过 实例对象 **.**出来私有属性(同公共属性的访问一样)去对私有属性进行访问和修改呢?初始化函数中在属性名前面加2条下划线的形式表示把当前属性设置为私有实例属性后,在外部(指创建当前类的实例对象)如何进行访问并更新该属性值?对象实例化,通过 p 去调用到。实例方法来获取或修改私有属性值。但以上的做法,是要在。
2024-07-07 11:24:32 478
原创 Python 动态添加实例属性,实例方法,类属性,类方法
创建类方法和静态方法,分别需要使用修饰符。首先,创建一个要动态添加的。测试类,初始化时添加。
2024-07-06 11:15:56 382
原创 Prism 入门05,对话框服务
接口,通过提供基础的示例来详细展示其如何使用。例如:在当前窗口按钮点击关闭或确认按钮的时候,需要传一些参数值回去给父窗口的话,就可以通过。窗口点击关闭按钮或确认按钮时调的方法。通过这个方法,来调用当前窗口是否关闭的事件。来打开指定的窗口的同时,就可以把要传递的参数放进去,并且当前的。方法, 传入要打开的弹窗视图的名称来打开对应的弹窗。方法中有一个回调函数,用来处理子窗口关闭时返回的参数。定义需要的传回去的值,并同时传递按钮点击的状态即。方法,是否允许关闭窗口,返回一个。当前窗口被打开调的方法,通过。
2024-06-08 11:08:19 475
原创 Prism 入门06,发布订阅(入门完结)
例如:传入字符串,表示该消息模型类发布和订阅的消息只能是一个字符串。传入一个实体类,表示该消息模型用来传递一个实体类的消息。1.首先,在使用 Prism 框架当中,进行事件消息的发布和订阅之前,需要定义发布事件的事件消息模型。那么传入的参数就表示了,该事件消息模型类要传递事件的消息格式。,从而获取到对应的消息模型类,传递事件的消息格式。本章节介绍使用 Prism 框架的消息聚合器。,实现如何进行消息发布,订阅,取消订阅的功能。文件夹,定义一个 事件消息模型类。传入定义的消息事件模型类。
2024-06-08 11:07:48 405
原创 Day35 首页动态显示登录账户及注销功能
本章节,实现了首页动态显示登录的账户名以及用户注销的功能一.登录成功后,保存用户信息登录成功后,跳转首页的同时保留用户的名称,并且把用户名称显示在首页中在 Common 文件夹下,创建一个AppSession 静态类,其中有一个UserName 静态属性字段,用来把当前登录成功的账户名,保存到内存当中。创建 AppSession 静态类 public static class AppSession { public static string? UserName {
2024-06-06 19:59:05 131
原创 Day34 事件聚合器实现消息过滤功能
当前章节,实现了消息事件过滤功能在上一章节中,我们发现在视图页和视图页都使用了同一个事件聚合器,导致在视图页发送的消息也被视图主页所接收,这违反了事件传递的意图和模块化设计的原则。为了解决这个问题,我们需要为事件聚合器引入消息过滤的行为。具体来说,我们需要为事件定义一个明确的类型,并在发送消息时指定其类型。同时,在订阅消息时,我们也应指定我们要订阅的消息类型。这样,只有订阅了特定类型消息的页面才会接收到并处理这些消息。
2024-06-06 19:57:56 129
原创 Day33 登录注册功能实现
本章节实现了登录注册功能,以及登录成功后,跳转到系统首页一.登录注册页面的切换在 Material Design 中,有一个 Transitioner 控件,也就是切换面板控件,它可同时容纳多个不同的窗口内容。其中就有一个属性值:SelectedIndex,根据该属性值来切换呈现不同的选中页内容。注册页面和登录就可以使用该控件来实现不同页面之间的切换。使用示例:引入prism 命名空间 xmlns:md="http://materialdesigninxaml.net/winfx/xam
2024-06-06 19:56:51 221
原创 Day31 登录视图数据绑定
中,引入密码附加属性类的命名空间 xmlns:pass=“clr-namespace:MyToDo.Extensions”需要创建一个密码附加属性类,通过绑定附加属性类间接的让。方法则在行为从密码文本框上移除时被调用,用于清理资源并取消订阅之前注册的事件。命名空间,添加密码行为。把当前密码框 跟附加属性类的行为类进行关联。方法在行为附加到密码文本框时被调用,用于初始化必要的逻辑和事件处理程序。密码绑定属性的时候,需要添加绑定的类型,本章节,实现了登录视图的数据绑定。引入附加属性类命名空间后,使用。
2024-06-06 19:54:26 82
原创 Day29 全局通知功能
本章节实现应用程序全局通知功能。当用户点击完成待办事项、添加新的待办事项或执行其他相关操作时,系统会通过界面上的消息提示来即时反馈操作的结果,提示是成功还是失败。本章节采用了 Material Design中的Snackbar组件作为消息提示工具,结合 Prism 框架中事件消息模型的发布/订阅机制,来实现应用程序全局通知功能。一.创建和实现消息模型在 Events 文件夹中,创建string 类型的事件消息模型 MessageEvent事件消息模型创建完成后,在静态扩展类 Dial
2024-06-06 19:52:11 286
原创 Day28 首页汇总方块点击导航功能
本章节,实现了右键双击 首页汇总方块的时候,跳转到对应的待办事项或备忘录视图页面在 IndexViewModel 中,给 TaskBar 里面 Target 属性,赋上要跳转的页面创建汇总方块导航事件命令实现导航事件命令处理逻辑时,首先获取 IRegionManager实例中的Regions属性,指定目标视图应当呈现的具体区域位置。接着,利用RequestNavigate 方法触发导航事件,跳转到对应的目标页面当前需要注意一点,已完成方块或汇总方块,由于这2个方块的数据来源和呈
2024-06-06 19:50:54 115
原创 Day27 首页汇总数据动态显示
本章节实现首页汇总统计数据的动态显示一.创建首页数据汇总数据接口汇总:待办事项的总数已完成:待办事项里面有多少条完成的待办完成比例:已完成和汇总之间的比例备忘录:显示备忘录的总数待办事项:显示待办事项未完成的集合备忘录:显示全部的备忘录信息在MyToDo.Shared 项目中创建出首页汇总的数据实体类(SummaryDto)public class SummaryDto:BaseDto{ private int sum; /// <summary> /
2024-06-06 19:49:50 94
原创 Day26 首页待办事项和备忘录列表编辑功能
在本章节中,我们将实现首页待办事项和备忘录列表的编辑功能。具体来说,当用户双击待办列表中的某个待办事项或双击备忘录列表某个备忘录数据时,打开对应的编辑窗口,以供用户进行修改。一.首先在IndexView.xaml 视图,为待办和备忘录添加双击编辑功能首先引入微软行为类 behaviors 命名空间,用于进行处理鼠标双击事件的交互xmlns:i="http://schemas.microsoft.com/xaml/behaviors"分别在显示待办和备忘录列表的 ListBox (数据
2024-06-06 19:48:22 190
原创 Day25 首页待办事项及备忘录添加功能
本章节,完成首页待办事项及备忘录添加功能一.修改待办事项和备忘录逻辑处理类,即AddMemoViewModel和AddTodoViewModel在 AddMemoViewModel逻辑处理类中,为了支持与其关联的View视图文件的数据绑定,需要定义一个与视图文件相匹配的实体类 Model。这个Model将包含 View中需要展示和编辑的数据属性,以便在 ViewModel和View之间进行数据交换和同步。 public class AddMemoViewModel :BindableBas
2024-06-06 19:46:29 247
原创 Day24 自定义询问窗口
在Views文件夹下的Dialog子文件夹中,创建一个名为的自定义询问窗口视图文件--标题--> < TextBlock Text = " {Binding Title} " d: Text = " 温馨提示 " Padding = " 5 " FontSize = " 14 " /> <!--内容--> < TextBlock Text = " {Binding Content} " d: Text = " 确认删除该数据吗?
2024-06-06 19:45:07 76
原创 Day23 自定义对话框服务
在Models 文件夹中,再建立一个接口类,继承自对话框服务类。并且自定义基类的服务方法。接着,再创建一个接口类,该用于处理窗口标题显示,参数接收处理,以及按钮操作的一些命令//Dialoghost 名称set;//打开窗口过程中所接收的参数//取消命令set;//保存命令set;实现基类自定义主机服务的方法,同时继承弹窗服务/// 自定义对话主机服务parameters??//从容器中取出弹出窗口的实例object(name);//验证实例有效性if (!if (!
2024-06-06 19:43:48 159
原创 Day22 客户端添加IDialogService 弹窗服务
本章节实现了首页点击待办事项或备忘录的时候,弹出一个对话服务窗口当用户点击首页的“添加备忘录”或“待办事项”按钮时,系统应弹出一个对话框,以便用户执行相关的内容添加操作。下面就开始实现这个弹窗服务。
2024-06-06 19:42:08 162
原创 Day20 备忘录页面完善以及优化
本章节完善了备忘录增删改查功能,及优化 打开备忘录页面时,如果无数据则显示 默认的背景图片,否则显示数据等细节优化备忘录功能基本跟前一章节的待办事项差不多一至,就不再做过多的笔述了当前章节备忘录 MemoView.xaml 前端页面完整源码<UserControl x:Class="MyToDo.Views.MemoView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation
2024-06-05 17:20:36 75
原创 Day19 待办事项功能页面完善以及显示优化
本章节完善了待办事项增删改查功能,及优化 打开待办事项页面时,如果无数据则显示 默认的背景图片,否则显示数据等细节优化 由于待办事项功能页,数据已正常渲染出来了。但页面新增,查询,修改,删除等功能还未实现。接下来实现待办事项的请求 Web Api 接口实现 CURD(增删改查)的功能。一.待办事项查询搜索删除增加等功能实现根据渲染出来的待办事项数据列表,鼠标单击对应的待办事项时,查找出该条数据,同时打开编辑窗口并展示在编辑窗口中在搜索框中输入的参数或选择的待办事项状态,按下Enter 回车按
2024-06-05 17:20:15 251
原创 Day18 加载中动画实现
本章节实现了客户端中,打开或进行获取数据时候,显示加载中的动画效果。数据获取完成后,将自动关闭该加载动画效果,以提升用户体验。在打开功能页面加载的过程中,为了向用户提供友好的等待提示,本章节利用了框架中的 事件聚合器()机制。通过创建一个等待提示窗口,并结合事件的订阅与发布,实现了在数据加载期间自动显示加载动画,并在数据加载完成后自动隐藏该动画的效果。这一实现确保了用户在等待数据加载时能够获得清晰的反馈,从而提升了应用程序的可用性和用户体验。
2024-06-05 17:18:50 129
原创 Day17 备忘录服务调用 WebApi 接口动态获取数据
本章节, 备忘录同样使用封装好的请求类,来实现 WebApi 服务接口获取数据,效果如下:二.接着需要实现 IMemoService 服务接口类三.最后在 App.xaml.cs 中,对备忘录服务接口进行依赖注入通过服务接口获取后台数据并添加到 memoDto 备忘录数据集合中MemoViewModel 备忘录视图业务逻辑处理类,动态获取服务接口数据完整代码如下:五.MyToDo 项目结构图
2024-06-05 17:17:23 153
原创 Day16 客户端调用WebApi 动态加载数据
本章节实现了 WPF MyToDo客户端 使用调用 WebApi 动态加载数据,效果如下客户端使用库调用动态加载数据,首先需要在 MyDoTo客户端中,使用安装两个库当前章节主要目的是:对库,根据项目需求再次进行封装使用。下面先做个简单的使用测试例子。
2024-06-05 17:15:26 94
原创 Day13 配置AutoMapper关系映射
服务的接口中,方法的实参必须是传实体类。但在实际开发过程中,这样是不允许的。标准且规范的做法是,定义一个数据传输层,即DTO层。用于 Dto 和 实体类 之间的数据映射转换。表示两者之间可以互相进行转换。
2024-06-05 17:09:26 279
原创 Day10 数据库创建
前端 1-9 章节已经把基本功能都做好了。但页面的数据是后台模拟生成的静态数据,接下来所有章节就是实现,页面的所有数据都是从数据库中获取,并且实现页面数据的持久化以及增删改查功能。
2024-06-04 20:55:01 286
Login- demo.zip
2021-02-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人