[WPF 学习] 20. 增量更新续——用阿里云对象存储OSS
摘要:OSS会为每个对象生成MD5,这样判断是否需要上传和下载就是判断MD5是否相等,比用数据库的表保存方便。 哭笑不得的是阿里云的OSS的MD5值居然非得加个引号(估计能多赚点流量费用) 还有阿里的OSS SDK或者说阿里的SDk的开发者有严重的拼代码的嫌疑(就是代码量相当大),所以自己划拉了一个类,把
阅读全文
[WPF 学习] 19. 增量更新
摘要:不管是ClickOnce发布还是生成单个文件的发布都是全量更新,当引用的nuget包较多的时候,重复上传和下载的内容就比较多,所以需要增量更新。 一、在数据库增加一个表 CREATE TABLE [dbo].[TApp]( [Version] [int] IDENTITY(1,1) NOT NULL
阅读全文
[WPF 学习] 17.WPF摄像头
摘要:公司的产品需要人脸比对,摄像头相关的需求: 屏幕上显示 比对时获取当前图片信息 C#可用的第三方库挺多,WPF能用的较少(WPF MediaKit是我认为较好的),存在着: 功能太强,也意味着比较大 打开摄像头的时候老是留着上一次打开时最后一帧图像 最后下载了WPF MediaKit和DirectS
阅读全文
[WPF 学习] 16.WPF Bitmap to ImageSource的几种方式
摘要:Image是显示图片的控件,若要显示一张Bitmap的图片,必须转换成ImageSouce,并赋值给Souce,有如下几种方式: A: private ImageSource ToBitmapSourceA(Bitmap bitmap) { MemoryStream stream = new Mem
阅读全文
[WPF 学习] 14.PlaceHolder的简单实现
摘要:为了能实现PlaceHolder的效果,用 "https://www.cnblogs.com/catzhou/p/12658478.html" 的方式,实在是十分麻烦,要为每个文本框都折腾一把,实在不爽。现在介绍个简单的方法,借用Tag属性传递PlaceHolder的内容,代码如下: 哦,顺便弄了个
阅读全文
[WPF 学习] 13.DataTrigger之EnterAction和ExitAction
摘要:原来的需求是控件可见时有动画,不可见的时候没有动画,只写了EnterAction,没写ExitAction,以为空间都隐藏了,总不会再有动画了。刚好该动画在一个摄像头获取的视频上面,动画期间视频有点卡,动画隐藏了,视频还是卡,于是弄了一下测试,发现不写ExitAction动画还是在动的。
阅读全文
[WPF 学习] 12.动态绑定VisualBrush
摘要:需求很简单,就是文本框想要个placeholder的效果,中文的时候显示“姓名”,英文的时候显示“Name”,于是有了以下代码: 然后,动态切换成英文资源的时候,发现他还是中文的,晕。后来改成以下代码就OK了,不知何解?
阅读全文
[WPF 学习] 11.虚拟键盘之庸人自扰
摘要:在带键盘鼠标的电脑上编写应用于触屏电脑的项目,为了能输入中文、英文、数字等各种庸人自扰。 一、自己画了个键盘 为了实现能输入中文,还简单编写了个拼音输入法,各种折腾,始终不是很舒服。最后客户要求手写输入中文,于是就完全放弃了。 二、折腾TabTip.exe win10的虚拟键盘是一个程序,即c:\P
阅读全文
[WPF 学习] 10.触发器
摘要:一、属性触发器 要改变的属性值不能再控件里面设置初始值,否则不能触发,如下例的Width 二、数据触发器 相比对属性触发器而言,他可以绑定其他控件的属性或者ViewModel里面的属性 三、事件触发器 1. 只能触发故事板(不知道是否正确) 2. 分为控件触发器和样式触发器(这两个名字自己取的,也不
阅读全文
[WPF 学习] 9.自定义一个Window的样子
摘要:基本思路是把原来的WindowStyle设置为None,然后自己弄一个标题栏 一、xmal 二、后台代码(几个事件)
阅读全文
[WPF 学习] 8.极简ComboBox的内容模板
摘要:一、设置内容模板如下 二、前端调用(xaml) 三、代码调用(cs) 四、效果图如下
阅读全文
[WPF 学习] 7.2 模板打印
摘要:利用FlowDocument进行模板打印 xaml 代码 用String.Replace进行替换,不知道也没有其他办法?
阅读全文
[WPF 学习] 7 打印相关的东东
摘要:栗子: 一、 PrintDialog 1. showDialog():显示打印设置 2. PrintableAreaWidth、PrintableAreaHeight:获取打印纸的宽高,单位为1/96英寸 二、DrawingVisusual RenderOpen():生成DrawingContext
阅读全文
[WPF 学习] 7 文本模板的应用
摘要:项目使用MVVM,创建了一个基类VMBase 然后创建继承类的时候,要写一个属性,比较麻烦 折腾了一会文本模板发现不错,比如下面的代码,就能自动生成一个类,效率还是蛮高的!
阅读全文
[WPF 学习] 6 求助:Ellipse的DataTrigger 失效
摘要:结果: TextBlock的DataTrigger触发了有效果,Ellipse的DataTrigger也应该触发了,但是无效,有谁知道原因?
阅读全文
[WPF 学习] 5. 3 以管理员身份运行
摘要:有些操作需要管理员权限,比如写注册表,所以就有了以下代码: 然后又问你是否同意,都是用户账户控制(UAC)惹的事,我明明是管理员身份证登录windows的,需要我再次确认,就想着能不能把UAC关闭了,发现是可以的: 1. 按键盘的“窗口+R”,在运行窗口中输入“gpedit.msc”回车,打开“本地
阅读全文
[WPF 学习] 5. 2 C#8.0的几个有用的知识点
摘要:1. 索引和范围 以下 .NET 类型同时支持索引和范围:Array、String、Span 和 ReadOnlySpan。 List 支持索引,但不支持范围 例一、获取身份证号码的生日 例二、获取字符串最后一位的内容 例三、移除最后最后一位的内容 2. switch 表达式 属性模式 元组模式 位
阅读全文
[WPF 学习] 5. 1 版本升级之压缩和解压
摘要:生成的单个文件的压缩率可达50%,忍不住要压缩一下,当然下载的时候也需要解压,我用的是GZipStream 1.压缩 compressionStream.Flush(); 这很重要,否则msTarget.ToArray()会丢掉部分内容。 2.解压
阅读全文
[WPF 学习] 5. 版本升级
摘要:WPF Core发布有个文件发布选项:生成单个文件,自动升级就比较方便了。 一、下载新版本程序,保存为...Exe~,并运行 二、替换老版本并运行
阅读全文