- 博客(108)
- 收藏
- 关注
原创 wpf 资源字典 换肤
介绍一下wpf中给控件更改样式的集中方法,只用button演示,其他控件相同1.使用代码更改button的style定义button的style1<Style TargetType="Button" x:Key="buttonstyle1"> <Setter Property="Background" Value="LightBlue" />...
2023-07-02 20:48:00
143
原创 wpf checkbox控件模板
先看一下上一篇文章:wpf button控件模板。再看此文会更好理解vs生产的checkbox控件模板有很长,我们直接找到controltemplate标签,和controltemplate.triggers。控件模板都先找这两个地方看一下布局和触发器既可以了。剩下的都是定义的一些资源和样式。checkbox的控件模板中定义了一个grid,有2列。1.第一列是一个border,名字叫c...
2023-07-01 22:12:00
141
原创 wpf button控件模板
1.从button的style说起 button有很多属性,我们在xaml中定义一个按钮时可以指定button的content、background、height、width等等。这些都是button的属性,而style也不例外也是button的一个属性,只是在给style属性赋值时不能简单的像height=“100”一样简单的设定一个字符串。先看一个简单的例子我们定义了一个style对...
2023-07-01 17:02:00
201
原创 Unity IOC
Unity IOC的一些理解1.什么是IOC?IOC(Inversion of Control),控制反转,又称为“依赖注入(DI =Dependence Injection)一句话描述:把创建对象的权力交给第三方控制。不再直接使用new去创建对象,而是通过第三方容器去创建,管理,在使用对象实例时从第三方容器去获取。2.为什么需要IOC?解耦。使程序依赖于抽象,不依赖于具体实现。3...
2022-08-24 22:23:00
83
原创 SeverCollection IOC的例子
SeverCollection IOC在Nuget上搜索microsoft.extensions.dependencyinjection1.一个简单的代码例子:private static void Main(string[] args) { Console.WriteLine("Hello, World!"); //定义一个IOC容器 ...
2022-08-24 22:19:00
38
原创 WPF MvvmToolkit入门
最新.net6 wpf MVVMToolkit 8.0 工程搭建。MVVMToolkit是一个轻量级MVVM框架,在框架下我们第一个要做的就是搞清在此框架下的一些常规操作:属性绑定和通知,命令绑定,消息传递。搞懂这些处理流程,然后就可以写自己业务的逻辑。1.安装mvvmtoolkit1.1Nuget下载CommunityToolkit.Mvvm1.2调整目录结构添加3个文件夹:Vi...
2022-08-24 22:19:00
169
原创 WPF Prism 入门 1
1.新建prsim工程,修改工程新建wpf工程,Nuget添加prism.Unity,自动添加需要的包项目结构:修改App.xaml修改前:修改后:App.xaml.cs:到这一步,一个wpf基于prism的工程就可以运行了,修改一下项目结构,用于自动绑定ViewModel把MainWindow放到Views下,需要修改3个地方Mainwindow.xam...
2022-08-24 22:18:00
145
原创 类型“__IMessengerExtensions”已定义了一个名为“CreateAllMessagesRegistrator”的具有相同参数类型的成员...
VS2022 .net6 WPF MvvmToolkit下出现这个问题解决办法:Fix build when using source generators (#6534) by singhashish-wpf · Pull Request #6680 · dotnet/wpf (github.com)https://github.com/dotnet/wpf/pull/6680...
2022-08-24 22:17:00
34
原创 WPF 任意事件绑定
任意事件绑定到Command的集中方法1.InvokCommandAction在NuGet中添加 System.Windows.Interactivity.WPF在Xaml中添加引用 xmlns:i="http://schemas.microsoft.com/expression/2010/interactions" xmlns:ii="http://schemas.microsof...
2022-08-24 22:16:00
63
原创 WPF CommandBinding和InputBindings
button的Command在绑定一个命令时,被绑定的命令是实现了ICommand接口的类对象:mvvm模式下,与业务逻辑有关的Command绑定ViewModel或Model中的命令,这个命令必须是继承自ICommand的类的实例与业务逻辑无关的命令,只和界面相关的Command绑定RoutedCommand或RoutedUICommand,这2个也是继承自ICommand其中还有继承...
2022-08-24 22:16:00
90
原创 Task的用法
Task用法记录总结1.创建Task的3种方法1.1new方式实例化一个Task,需要通过Start方法启动 Task task = new Task(() => { Thread.Sleep(100); Console.WriteLine($"hello, task1的...
2022-08-24 16:23:00
93
原创 WPF 数据模板
数据模板和控件模板的区别在哪?控件模板是用来修改某个控件内部的布局结构,不涉及到把一些数据(类对象)绑定到控件模板内部数据模板是用来定义数据怎么显示,数据通常是来自数据集合,把一个数据集合和一个集合控件关联起来,如ListBox,ComboBox,ItemContcrol这种集合形式的控件,数据怎么显示其实也涉及到布局可以简单理解,只修改控件布局,则使用控件模板,如果想把一个集合控件关联到...
2022-08-24 16:18:00
50
原创 xml 速查
//命名空间using System.Xml;//初始化一个xml实例XmlDocument xml=new XmlDocument(); //导入指定xml文件xml.Load(path);//指定一个节点XmlNode root=xml.SelectSingleNode("/root"); //获取节点下所有直接子节点XmlNodeList childlist=root....
2022-08-24 16:18:00
35
原创 WPF 路由事件
1什么是路由事件简单说,路由事件可以沿着视觉树VisualTree进行传递,在这视觉树中的所有对象都可以收到这个事件。前提是添加了检测。1.1什么是逻辑树LogicalTree简单理解:逻辑树就是我们在xaml中写的布局逻辑如xaml代码:<Grid> <StackPanel Orientation="Vertical"> <...
2022-08-24 16:16:00
62
原创 WPF 控件模板
1.控件模板和style的区别Style用来修改控件属性的值,比如button的height width background。Controltemplate用来修改一个控件的内部结构,比如一个button,想把一个button的内部添加一个图片和一个提示文本,这两部分合起来还能完成button的功能一个细节,默认让所有的目标类型引用控件模板,定义在一个style中,因为style不写k...
2022-08-23 08:22:00
72
原创 WPF 数据验证
Validation ValidationRuleiDataErrorInfo+DataAnimation 的用法//Validation:依赖属性用(在验证回调中返回false)//ValidationRule:依赖属性和普通类的属性都能用 //IdataErrorInfo:依赖属性和普通类的属性都能用,谁想用的话 就继承iDataErrorInfo区别?Validat...
2022-08-23 08:20:00
60
原创 WPF Type Converter和 IValueConverter
初学者。博客仅做个人的理解整理,不到位的地方欢迎大佬们指出,感谢。1.类型转换器TypeConverter1.1类型转换器是用来干什么的?在xaml中给控件的属性赋值,后台代码解析这个值并赋值给控件的对应的属性(这个属性肯定是依赖属性了)如在xaml中写: <Border BorderBrush="Red" BorderThickness="3">xaml里面 Bo...
2022-08-23 07:50:00
86
原创 WPF绑定
初学者。博客仅做个人的理解整理,不到位的地方欢迎大佬们指出,感谢。1.绑定使用的关键字:Binding2.为什么要?把界面上的控件的属性和后台的变量绑定起来,达到效果:在后代修改变量,界面自动更新数据。控件的属性必须时依赖属性或者依赖附加属性才能绑定3.绑定表达式中常用的关键字:Source、ElementName、DataContext、RelativeSource、Path、X...
2022-08-22 16:35:00
48
原创 WPF 行为
1.行为的定义引用using System.Windows.Interactivity;1.1新建类并继承Behavior想给所有控件使用时,这样写1.2重写OnAttached和Ondetaching方法OnAttached:把某种事件附加到某控件上,在这里指定事件类型,如 MouseEnter MouseMove MouseLeaveOndetaching:把某种事件从某控件...
2021-12-31 22:44:00
53
原创 WPF 依赖属性
初学者。博客仅做个人的理解整理,不到位的地方欢迎大佬们指出,感谢。1.什么是依赖属性,它的作用是什么需要了解一下wpf中数据绑定的东西。个人理解依赖属性就是为了支持数据绑定的功能, 只有依赖属性才支持绑定表达式,那为什么要绑定呢?绑定后可以实现在后台代码修改数据,对应的界面的控件内容也修改。如:button的content,textbox的Text,textblock的text,这些属性...
2021-12-26 14:27:00
77
原创 WPF资源字典
初学者。博客仅做个人的理解整理,不到位的地方欢迎大佬们指出,感谢。0.什么是资源一个样式、图片、画刷、对象、普通变量都可以当作资源。0.1如何定义一个资源每个控件都有一个resource属性,可以在本身的resource里面定义资源。举个例子在window窗体定义一个样式资源。<Window.Resources><Style TargetType="Button"...
2021-12-24 19:40:00
40
原创 WPF样式
初学者。博客仅做个人的理解整理,不到位的地方欢迎大佬们指出,感谢。1.什么是样式,为什么需要样式 样式可以自定义控件的属性,比如修改button的字体、前景色、背景色、边框厚度颜色等。2.如何定义一个样式并引用2.1在控件本身的Resource中定义<Button Content="test1" > <Button.Resources> <...
2021-12-24 14:40:00
45
原创 泰凌蓝牙 8232 PWM
/*************************************************************************************1.想整理些泰凌8232的坑,做项目中,在网上几乎没有关于这个芯片的资料,可能是没人用,不应该,还是因为版权啥的?? 如果真的涉及,请联系我删除,谢谢2.记录一些遇到的问题,有需要的可以参考下,文章也会记录一些未解决的问...
2021-02-08 22:15:00
42
原创 泰凌蓝牙 8232 GPIO
/****************************************************************************************************************************************************************************************************1...
2021-02-08 21:47:00
50
原创 泰凌蓝牙 8232 printf调试
/****************************************************************************************************************************************************************************************************1...
2021-02-08 21:30:00
58
原创 泰凌微 蓝牙 8232
/****************************************************************************************************************************************************************************************************1...
2021-02-08 14:04:00
91
原创 MDK unknown pin
使用CubeMx生成的MDK工程无法使用软件仿真,提示unknown pin解决办法:打开一个非CUbeMx生成的MDK工程,把红色框框里面的设置替换CubeMx生成的MDK工程。芯片要对应。这里都是f103的。...
2020-07-25 13:08:00
26
原创 HAL库_串口接收/发送_+DMA内存到外设
记录一下使用cubemx配置串口发送dma的流程和问题1.打开时钟2.打开串口3.设置DMA设置dma可以从syscore里面找dma也可以在串口中配置dma,这两种方法一样。4.生成工程后,在需要开启dma传输的地方调用这个函数即可。 HAL_UART_Transmit_DMA(&huart1,(uint8_t *)Senbuff, size...
2020-07-24 10:13:00
35
原创 IIC介绍+软件模拟IIC
1.什么是IICIIC总线是一种串行数据总线,只有二根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,两条线可以挂多个设备。 IIC设备(绝大多数)里有个固化的地址,只有在两条线上传输的值等于IIC设备的固化地址时,其才会作出响应。通常我们为了方便把IIC设备分为主设备和从设备,基本上谁控制时钟线(即控制SCL的电平高低变换)谁就是主设备。2.IIC物理层介绍IIC通讯的主机和从...
2020-07-19 09:43:00
48
原创 STM32CubeMx_HAL大概介绍
1.什么是STM32CubeMx和HAL库HAL库对比标准库,封装程度更高,更具有移植性。STM32CUbeMx是一种图形化配置界面,用来完成对外设的初始化,比如RCC模块、NVIC、GPIO、串口、定时器。使用标准库都是先对某个外设的结构体赋值,最后调用Init函数将结构体写入寄存器,这个过程有点繁琐,因为某个外设的初始化都是差不多固定的,比如定时器的初始化都是先分配,设置ARR。使用Cub...
2020-07-18 20:30:00
35
原创 HAL库_定时器PWM
对比标准库流程,使用CubeMx配置PWM1.PWM标准库中使用pwm的流程1.开时钟2.设置psc和arr3.通道初始化4.设置CCRx比较/捕获寄存器的值HAL库中,以上操作都在图形化界面上操作1.开时钟(先开RRC,再开TIM,不管干啥,第一步要做的都是要先打开RRC,使用HSE) 打开TIM时钟,Clock Source 选择Internal Clock是选择APB总...
2020-07-18 19:13:00
202
原创 HAL库_定时器更新中断+流水灯
对比标准库的流程使用HAL库编写定时器更新中断标准库中使用定时器更新中断的方式:1.开时钟,设置TIM的时钟2.初始化定时器石基的结构体3.调用Init初始化函数4.处理定时器中断HAL中使用定时器更新中断的方式:1.开时钟2.初始化定时器石基的结构体3.处理定时器中断3.1在CubeMx中设置NVIC的抢占优先级和子优先级3.2 编写TIM3_IRQHandler...
2020-07-18 17:47:00
154
原创 HAL库_EXTI9-5
CUbeMx配置EXTI1.EXTI配置比较简单,看最后面两张图片即可。这里说一下EXTI9_5中断的问题。EXTI5这条外部中断线对应PA5、PB5、一直到PG5。我在CubeMx中配置PE5和PF5都连接到EXTI5线上,结果发现后配置的端口总会覆盖先配置的端口查看EXTI寄存器配置发现寄存器[3:0]位 写0100,可以连接PE5,写0101可以连接PF5。那这样说的话,没...
2020-07-18 14:47:00
70
原创 HAL库_流水灯
对比标准库的流程使用HAL库编写流水灯标准库:1.开时钟2.初始化GPIOInit结构体3.调用GPIO_Init(GPIOB, &GPIO_InitStructure) 初始化函数 1 typedef struct 2 { 3 uint16_t GPIO_Pin; /*!< Specifies the GPIO pins to be c...
2020-07-18 14:46:00
50
原创 HAL库_串口接收/发送_阻塞+中断
标准库中打开串口的函数:USART_Cmd(USART1, ENABLE);标准库中打开中断的函数:需要单独设置被打开的中断的类型USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE); 在HAL中,打开串口和中断合并成了一个函数:发送就打开发送中断,接收就打开接收中断HAL_StatusTypeDef HAL_UART_...
2020-07-18 12:41:00
134
原创 SPI介绍+软件模拟SPI
1.什么是SPISPI通常有一个主设备和一个或多个从设备,通常采用的是4根线,它们是MISO(数据输入,针对主机来说)、MOSI(数据输出,针对主机来说)、SCLK(时钟,主机产生)、CS/SS(片选,一般由主机发送或者直接使能,通常为低电平有效)。全双工。2.SPI物理层图1 SPI物理层连接图一个主机可以连接多个从机,其中SCK,MOSI,MISO所有从机共用。SSx单独连接主...
2020-07-18 06:13:00
63
原创 STM32 ADC基本介绍+DMA外设到内存
1.ADC介绍STM32f103系列有3个ADC,精度为12位,每个ADC最多有16个外部通道。其中ADC1和ADC2都有16个外部通道,ADC3一般有8个外部通道,各通道的A/D转换可以单次、连续、扫描或间断执行,ADC转换的结果可以左对齐或右对齐储存在16位数据寄存器中。ADC的输入时钟不得超过14MHz,其时钟频率由PCLK2分频产生。ADC功能框图:把整体框图分成若干个部分,按照...
2020-07-15 20:57:00
186
原创 stm32定时器_输出比较+输入捕获
首先从定时器的功能框图上介绍定时器的基本功能,然后介绍输出比较模式(输出PWM)和输入捕获模式。最后使用定时器的输入捕获功能测量一个脉冲的宽度。通用定时器框图如下:( STM32中文参考手册_V10.pdf P254)图11.输出模式从图1可以看到通用定时器的基本框图。框图比较复杂,把定时器的功能单独拆分成下图,首先分析下定时器的输出比较模式用到的部分。图2(1)左上角第1部...
2020-07-06 20:34:00
79
原创 stm32串口接收/发送+DMA内存到外设
简要说一下实验目的:上位机给单片机发送数据,单片机使用串口接收中断接收。在接收中断中,串口向DMA控制器发送请求,把内存中的数据发送到串口的DR寄存器(发送到上位机)1.串口的基本配置配置略过,需要注意的是打开串口的接收中断,编写接收中断函数 串口接收中断的NVIC配置 1 /* 配置USART为中断源 */ 2 NVIC_InitStructure.NVIC_IRQChan...
2020-07-05 20:48:00
45
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人