自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (5)
  • 收藏
  • 关注

原创 插件式框架与MEF

一、插件式架构设计意义为什么采用插件式架构设计?业务上要求在应用程序部署完后,在不需要重新编译、安装应用程序的情况下,仍然可以对应用程序的功能进行扩展;为方便源码管理、项目管理、团队协作以及协同开发需求,将业务逻辑关系分成独立的模块;架构设计需求,将模块解耦,分而治之。【集成部署】【插件式部署】**插件式架构设计的核心是:业务模块动态加载,而非静态引用。**二、MEF插件式框架介绍1、介绍MEF(Managed Extensibility F...

2022-03-11 09:17:56 824

原创 WPF依赖属性-DependencyProperty和INotifyPropertyChanged区别

 WPF数据绑定的资源,可以是CRL对象;可以绑定CLR对象的属性,属性或索引器;绑定数据的解释是通过Microsoft . net Framework反射或ICustomTypeDescriptor解释;解释绑定的方法有三种,其中最常的是成为依赖对象派生类实现INotifyPropertyChanged 这两种方法的区别在于: CLR通常采用实现INotifyPropertyChanged达到绑定的目标;继承至依赖对象的对象,则通过定义依赖属性实现绑定。这两者的区别在于:针对的对象不同,一个

2021-08-10 19:59:33 642

原创 Visual studio 自定义代码段

 Visual studio 代码段就是代码模板,Visual Studio 内置了一些常用的代码段,如:键入prop,再按两次tab键,会生成自动属性代码。public int MyProperty { get; set; }键入propdp,再按两次tab键,会生成依赖属性代码。 代码模板是存放在Visual Studio安装目录,指定目录下的代码生成模板;只要我们按照规则编写模板文件;并把文件存放在指定目录下;然后通过代码段管理,指定快捷键即可;1)代码段管理 通过菜单【工具】-【代码段

2021-07-07 09:42:00 593

原创 常见消息队列比较

2021-06-22 11:11:36 99

原创 颜色选择器开发-色域及转换算法

一、颜色编码方式(颜色空间/色域):1、RGBRGB三原色是基于人肉眼对光线的生理作用2、HSB/HSVHSB(也叫HSV)模式更便于描述人眼对颜色的感觉;色调(Hue,H),饱和度(Saturation,S),亮度(Value,V)3、CMYKCMYK也称作印刷色彩模式,顾名思义就是用来印刷的,是一种用于印刷品依靠反光的色彩模式。CMYK——即青Cyan、洋红(品红)Magenta、黄Yellow 、黑blacK四种色彩,在印刷中通常可由这四种色彩再现其它成千上万种色彩青、品红、黄

2021-06-15 13:40:58 1171

原创 深入理解WPF附加事件

通过前一篇 https://blog.csdn.net/BitoLink/article/details/117330733,了解路由事件的声明、定义、注册/注销,以及触发机制; 其中事件的注册/注册,以及触发方法都是定义在UIElement中的;所以路由事件的宿主一般是可视化的UI控件。 如果是非UIElement派生类,如果要实现路由事件,则需要像附加属性一样,通过附加的方式实现,附加上路由事件 (Attached Event);附加属性是某对象在特定环境中才具备的属性,所以附加属性是定义在环境中的

2021-06-02 14:00:59 406

原创 深入理解WPF路由事件

 WPF中有两种事件模型:一种是在WinForm时代就存在的CLR事件;另一种是WPF时代的路由事件;一、CLR事件定义与使用 //定义一个委托 public delegate void ClickHandler(String Name); public class Test { /// 定义事件 public event ClickHandler ClickEvent; /// <summary>

2021-05-27 16:01:26 994

原创 关于.Net MAUI

 MAUI(Multi-platform App UI)是微软在Build 2020 大会上,正式公布的.NET上的跨平台框架,正式版将在2021年11月发布的 .NET 6 中发布一、MAUI关键信息MAUI 是 Xamarin.Forms 的进化MAUI 使用同的技术栈,一个项目,可发布至:Android,iOS,macOS 和 Windows平台MAUI 项目中,不同的平台,通过添加特定操作系统的源代码文件,访问本机底层操作系统 API 跨平台的关键:特定操作系统的源代码文件;这部分

2021-05-26 10:50:34 1534

原创 WPF设备无关单位(DIU)

1、关于WPF 单位 WPF 为了保持应用程序窗口,在不同分辨率的显示器上,始终保持基本相同的布局;WPF所有元素都是使用与设备无关的单位(DIU)进行度量。由于UI设计师的显示器和开发人员的显示器的分辨率不经常是一致的,并且UI设计师,通常采用的是用“像素”来度量尺寸;所以需要进行转换;2、关于分辨率的几个概念在了解转换方法前,首先应了解几个基本概念1)物理显示器DPI 根据显示器的分辨率计算2)系统DPI设置 Windows10,可以在显示设置中进行缩放设置;进行缩放设置后,系统DPI设

2021-05-25 17:14:40 384

原创 WPF使用第三方的字体(TTF文件)

一、下载字体找到需要的字体文件,可以是TTF或TTC格式,我这里使用的是TTC格式测试字体:链接:https://pan.baidu.com/s/1P1BCucH2gd_fldcZTgZaNA提取码:vx2v下载完后,会得到一个TTC文件二、查看字体中的字体类型双击,打开TTC文件;其中的字体名称,就是FontFamily三、添加字体文件为资源文件添加程序集资源中添加该文件来资源文件添加完成后,该文件就存在于Resource目录下四、使用资源文件五、在App.xaml中或者

2021-05-18 19:42:12 3011

转载 WPF从外部文件或者程序集加载样式或其他静态资源

很多时候我们希望复用WPF中的样式,而通过复制一长串样式代码至XAML中的静态资源显得极为不雅,导致代码不易于管理。而想要改变这种模式有两种方式:(1)新增“资源字典”项目,将样式代码写入该文件中,使用时只需引用该文件即可;(2)将上述的“资源字典”放到一个类库项目中,生成程序集,其他项目想要使用时需引用该程序集,然后添加对应的样式文件路径即可。方法1:在生成exe的程序中,需要设定关键词(Key),控件引用时加 Resources属性方法2:<Window.Resources&g

2021-05-17 14:24:48 505

原创 WPF 自定义控件

参考以下系列教程 《WPF自定义控件与样式》

2021-05-14 11:07:51 168

原创 WPF实现换肤(手动)

一、三个基础知识1、分层式资源 Hierarchical ResourceFrameworkElement基类有一个Resources属性,类型是ResourceDictionary。这个字典包含了一组键值对,每个键值对中的key和value都可以使任意的object。Resource dictionaries 在程序中分层存放。当程序需要定位一个资源(例如Brush, Style,DataTemplate或其他对象)的时候,首先他检查发起资源寻找请求的元素的Resource属性。假如没有找到,它会检

2021-05-11 17:03:07 403

原创 WPF依赖属性-附加属性

&emdp;WPF附加属性:在特定环境下,对象才具备(有意义)的属性;例如:一个人所在的公司,只有在讨论他工作时候,才有意思;GIRD控件中子控件的Row,Column属性; 因为附加属性是在特定的环境下才有意义,那么附加属性是定义在环境中的; 附加属性的定义:改造前一篇《依赖属性的传递》的代码 public class CustomStackPanel : StackPanel { public static readonly DependencyPro

2021-05-10 15:57:40 813

原创 WPF依赖属性-依赖属性的传递(继承)

 依赖属性的传递,在XAML逻辑树上, 内部的XAML元素,关联了外围XAML元素同名依赖属性值 ;<Window x:Class="Custom_DPInherited.DPInherited" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http

2021-05-10 14:48:42 711

原创 WPF依赖属性-依赖属性介绍

WPF的设计理念是:数据驱动,UI与逻辑松耦合一、什么是依赖属性 依赖属性是一种可以自已没有值,但是可以通过Binding方式,从数据源(依赖别人的数据)获得值的属性二、为什么要有依赖属性传统的CLR属性public class Person{ private string _Name; public string Name { get { return _Name; } set

2021-05-10 14:04:31 278

原创 3、一个简单的SpringBoot工程

1、选择Spring2、配置构建工具和JDK版本3、添加开发工具4、选择WEB框架5、配置数据源6、设置保存目录 点击“Finish”后,Maven会自动从远程仓库,下 载依赖库文件; 其实这就是spring boot最核心的内容:自动配置;由于在生成项目的过程中勾选了 mybatis以及mysql,所以pom中引入myBatis的jar包; 该工程依赖了哪些库文件,可以通过POM 文件查看和管理 ;7、POM文件8、启动项目 通过idea生成springboot项目,启

2021-05-09 15:30:09 139 1

原创 2、maven国内镜像和本地仓库配置

目录一、修改远程下载仓库和本地仓库地址1、打开IDEA设置界面**2、查看Maven配置3、创建Maven配置文件4、修改本地存储仓库 在使用IDEA作为开发工具时,我通常使用Maven进行依赖管理和项目构建; Maven默认的依赖库下载仓库为自带的远程仓库,对于国内用户,下载速度相当慢; 为了提高下载速,我们可以修改为国内的镜像仓库; maven本地仓库,默认是用户目录下的.m2/repository这个文件夹,因为这个文件夹,在Windows 系统上,一般是在系统盘上;所以一般会修改为一个空间比较

2021-05-09 11:04:14 530 1

原创 1、IDEA和java安装

目录一、JDK下载二、环境变量配置三、测试JDK是否安装成功四、IDEA配置JDK一、JDK下载 首先要下载java开发工具包JDK,下载地址点击如下下载按钮: 在下载页面点击接受许可,并根据自己的系统选择对应的版本; 以 Window 64位系统为例: 下载后成功后,双击图标即可安装,安装过程中直接下一步即可,也可修改安装目录; 本例安装目录为:D:\tools\jdk1.8.0_77。二、环境变量配置1、安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置";2、选择"

2021-05-09 09:31:57 1078

转载 【转载】透视WPF 应用程序的利器

源文链接《透视WPF 应用程序的利器》当我们看到一些设计新颖的网站时,可以借助浏览器自带的Inspector 工具或插件方便的浏览网站布局结构及逻辑。如果是WPF 应用程序能否看到控件的架构方式呢?本篇将介绍两款工具Snoop 和WPF Inspector 可用来窥探WPF 应用程序内部结构。Snoop 打开Snoop 程序,它是以一个工具栏形式出现(如下图)。 接下来打开一个经典WPF 应用程序Expression Blend 4(下文简称:EB4),点击“刷新”按键即可看到Snoop 已经捕获

2021-05-08 11:41:32 191

原创 MvvmLight(5)-使用MvvmLight实现Mvvm设计模式

 前面几个章节,主要介绍了,在不引用MvvmLight框架的情况下,利用WPF自身的特性;如何实现界面与数据,以及业务逻辑的解耦;解耦后,我们将代码整理到不同的程序集,便于管理;最终整理结果如下: 为了更方便地使用Mvvm设计模式,我们引用MvvmLight框架; 如何安装框架,参见《MvvmLight(1) 介绍》MvvmLight中的Obserable 类实现了INotifyPropertyChanged接口ViewModelBase类,继承了Obserable ,并提供了依赖注入方法

2021-04-16 09:48:53 572

原创 MvvmLight(4)-统一管理业务逻辑

 在前一章节《MvvmLight(3)-利用Binding解耦界面与业务及数据》中,我们解耦了界面与业务逻辑及数据,这样每个界面都有独立的一个CS文件与之对应,只是这个CS文件再也不是Behinde模式; 这里还有一个比较麻烦的事,每个XAML还是必须与对应的CS文件中的类绑定;如果我们把这些CS文件放在独立的程序集中,那么每个CS中的类,都是对外暴露的;如何统一管理这些类,并对外暴露呢? 解决方案是:由一个统一的类来管理每个页面的类,统一对外暴露;具体操作如下:由一个类(ViewModelLoca

2021-04-15 12:08:37 134

原创 MvvmLight(3)-利用Binding解耦界面与业务及数据

在上节介绍 WPF中的数据绑定方式 时,我知道 ,建立数据绑定时,需要作如下处理:待绑定数据类实现INotifyPropertyChange;需暴露给外界的属性发改变时,触发PropertyChanged事件,事件的参数为属性的名称;将数据类作为数据源绑定到界面上;在XAML中通过Path 指定绑定的属性。在这些操作中将数据类作为数据源绑定到界面上时,是通过给DataContext赋值的方式绑定的。DataContext属性是被定义在FrameworkElement类里的,这个

2021-04-15 10:55:41 225

原创 MvvmLight(2)-WPF中数据绑定(Data Binding)

WPF 作为展示层技术,华丽的外观和动画,只是它的表层现象;更重要的是,它帮助程序员把思维的重心放在了逻辑层;让展示层永远处于逻辑层的从属地位;由UI驱动,改为数据驱动;其具备这种能力的关键是引入了数据绑定(Data Binding)、依赖属性(Dependency Property)、数据模板(Data Template);层示层使用WPF类库来实现,所有与业务逻辑和算法相关处理都在逻辑层实现;而层示层与逻辑层的沟通是通过数据绑定(Data Binding)来实现;实现了展示层与逻辑层的解耦,方便开发与

2021-04-09 14:39:28 315

原创 MvvmLight(1) 介绍

为什么要用MvvmLightMVVM是Model-View-ViewModel的简写。主要目的是为了分离视图(View)和模型(Model)的耦合想进一步了解MVVM,移步:https://www.codeproject.com/kb/wpf/wpfmvvmquickstart.aspx,使用了MvvmLight后,业务代码不再是写在XAML对应的CS文件中,而是有专门类(模块)处理业务逻辑和数据访问;完全解耦了视图和逻辑业务的关系,通过数据绑定和命令来处理UI属性及事件驱动MVVMLight的官

2021-04-09 09:41:32 189

原创 AvalonDock使用(2)-简单布局设置

在上一篇《AvalonDock的基本用法》中,我们使用AvalonDock控件,简单实现了,停靠左右两边的面板;这是面板的默认停靠位置;当然你也可以拖动它,让浮动,也可以让它停靠在其它地方;通过简单几行代码实现了如下效果:隐藏所有面板:两个都隐藏时,会分别折叠到两边;展开其中一个面板:根据我们设定的宽度展开;展开所有面板:同时展开时,会各占据50%的空间同Visual Studio 对比,似乎还少了中间一部分,即占据中间部分的区域;在上一篇中,我们讲到LayoutDoucument会随着La

2021-04-08 15:57:27 872

原创 AvalonDock使用(1)-基本用法

AvalonDock的基本用法介绍AvalonDock库中的基本类DockingManager:停靠管理器类LayoutRoot : 布局根节点类LayoutPanel:布局面板类LayoutAnchorablePane:可停靠窗格类LayoutAnchorable:可停靠内容类LayoutDocumentPane:文档窗格类LayoutDocument:文档类LayoutAnchorablePaneGroup:可停靠窗格组类LayoutDocumentPaneGroup:文档窗格组类小结具体的用法1. 通

2021-04-08 15:12:16 3791

转载 优雅地处理SpringBoot异常

Springboot异常处理的五种方式——SpringBoot学习SpringBoot优雅的全局异常处理

2021-02-25 10:52:38 45

转载 springboot使用hibernate validator校验

链接

2021-02-25 10:30:52 65

原创 创建自己的Visual Studio插件仓库

文章目录使用插件的问题如何建立私有插件仓库下载插件安装文件创建插件仓库描述Atom.xml添加私有插件仓库下载安装使用插件的问题目前在使用Visual Studio 2019时,看到很多优秀的插件;推荐插件;但是Vs2019在线安装时,非常慢,经常安装失败;当然,可以去官方插件市场 下载后,再安装;但是对于插件选择和安装这类不是经常操作的事,过一段时间就会忘了;是不是可以建立自己的插件仓库呢?把平时好用的插件收集起来,放在一起,下次安装时,就不漏装,同时也可以共享给其它同事;如何建立私有插件仓库下载

2021-02-24 17:45:00 560

转载 12款好用的Visual Studio插件,最后一款良心推荐

12款好用的Visual Studio插件,最后一款良心推荐

2021-02-24 15:59:05 580

转载 Spring AnnotationConfigApplicationContext

说明使用AnnotationConfigApplicationContext可以实现基于Java的配置类加载Spring的应用上下文。避免使用application.xml进行配置。相比XML配置,更加便捷。package com.myapp.config;import com.myapp.Entitlement;import org.springframework.context.annotation.Bean;import org.springframework.context.annot

2021-02-24 14:46:27 446

原创 Spring Boot注解之@ComponentScan用法和实现原理

@ComponentScan的作用@Component注解及其衍生注解@RestController、@Controller@Service和@Repository都是组件注册注解。@ComponentScan注解主要是从约定的扫描路径中,识别标注了组件注册注解的类,并且把这些类自动注册到spring IoC容器中,这些类就是我们通常所言的bean。IoC容器是Spring的特色之一,可以使用它管理bean。当然@Configration注解修饰的类也会被托管给IoC容器。举个例子,你在微博上@某某

2021-02-23 04:00:27 4299 2

转载 关于Spring Bean

Bean在Spring和SpringMVC中无所不在,将这个概念内化很重要,下面分享一下我的想法:一、Bean是什么?Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性(即实例化);凡是有方法或属性的类都需要实例化,这样才能具象化去使用这些方法和属性;规律:凡是子类及带有方法或属性的类都要加上注册Bean到Spring IoC的注解;把Bean理解为类的代理或代言人(实际上确实是通过反射、代理来实现的),这样它就能代表类拥有该拥有的东西了我们都在微博上@过某某,对方会优先看

2021-02-22 05:48:25 103

原创 Spring 事件

Spring事件目录Spring 事件概述Spring事件关键类Spring事件关键步骤关键Jar包Demo介绍新建Spring Initializr工程Maven导入**关键jar包**自定义事件(消息)事件(消息)侦听者实现事件(消息)侦听事件(消息)发布者发布事件()Spring 事件概述Spring事件[^2](Application Event) 为Spring Bean与Bean之间的消息传递提供了支持;当一个Bean完成某项工作后,希望其它Bean知道,并执行相应的操作;这时,只需要将其

2021-02-22 04:58:23 173

Win2D.UWp 动态库

Microsoft.Graphics.Canvas Win2D.UWp 动态库

2023-03-20

EventToCommand.7z

WPF 事件转命令示例代码

2021-10-20

Data Binding - WPF .pdf

DependencyProperty和INotifyPropertyChanged区别 数据绑定的几种方式

2021-08-10

Visual Studio 代码片段.7z

Visual Studio 代码片段:路由事件和附加路由事件 使用方法参见:我博文中的介绍

2021-07-07

ColorSpaceTransfer20.7z

RGB,CMYK,HSB,HSL YUV之间的转换 纯C# WinForm开发

2021-06-22

C# WinForm Ribbon风格控件源码

C# WinForm Ribbon风格控件源码

2021-05-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除