摘要: 前言 还记得早些年刚工作的那会,公司的产品从Delphi转成了WPF(再早些年是mfc)。当时大家也是处于一个对WPF探索的阶段,所以有很多概念都不是非常清楚。 但是大家都想堆技术,就提出使用MVVM,我那会是第一次听到MVVM,在网上看了一些资料后,也难以理解,后面也是硬着头皮在写。 有意思的是其 阅读全文
posted @ 2024-09-13 11:37 zhaotianff 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 复制一行数据 1 INSERT INTO `表名` ( `字段1`,`字段2`) 2 SELECT `字段1`,`字段2` 3 FROM `表名` 4 WHERE `表名`.字段1 = 'xxx' 如果字段1为主键,不能重复,可以在复制时指定值,如 1 1 INSERT INTO `表名` ( `字 阅读全文
posted @ 2024-09-12 10:55 zhaotianff 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 最近有小伙伴需要在不规则窗体上放置WebBrowser控件,因为设置了WindowStyle="None" 和 AllowsTransparency="True"。 导致WebBrowser控件不显示。 界面代码如下所示: 1 <Window x:Class="WebBrowserDemo.Main 阅读全文
posted @ 2024-09-11 15:46 zhaotianff 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 在早些年写一些桌面软件时,需要管理员权限,但是又不想UAC弹窗,所以一般是直接将UAC的级别拉到最低,或者直接禁用UAC的相关功能。 什么是UAC(User Account Control) 用户帐户控制 (UAC) 是一项 Windows 安全功能,旨在保护操作系统免受未经授权的更改。 当对系统的 阅读全文
posted @ 2024-09-03 15:50 zhaotianff 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 对于某些定制软件来说,我们希望系统启动进入桌面就看到我们的软件界面。 如果使用开机启动项来实现,会有一定的延迟,在那之前用户能看到系统桌面,并且能进行任意操作。 类似下面的效果 可以通过注册表来实现 找到计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Window 阅读全文
posted @ 2024-08-29 11:36 zhaotianff 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 我们在将一个数据集合绑定到列表控件时,有时候想根据不同的数据类型,显示为不同的效果。 例如将一个文件夹集合绑定到ListBox时,系统文件夹和普通文件夹分别显示为不同的效果,就可以使用模板选择器功能。 WPF提供了一个模板选择器类型DataTemplateSelector,它可以根据数据对象和数据绑 阅读全文
posted @ 2024-08-26 14:34 zhaotianff 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 最近有小伙伴咨询我去编译运行一个程序。我一开始以为是CMakeLists,结果发现是makefile。 什么是Makefile ‌Makefile是一种用于自动化构建和管理程序的工具‌,它定义了项目中文件的依赖关系和构建步骤,帮助程序员自动化编译、链接和打包程序,从而提高软件开发效率。 Makefi 阅读全文
posted @ 2024-08-23 12:01 zhaotianff 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 数据模板回顾 在WPF中数据模板可以控制数据的呈现方式。 对于一些简单的数据,例如一个string,一个int,在显示时,无须额外控制 。 但是对于复杂数据类型,就需要使用数据模板来控制数据的呈现方式。 一个简单的例子 假设 我们定义了一个学生类 1 public class Student 2 { 阅读全文
posted @ 2024-08-22 11:49 zhaotianff 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 可视化树和逻辑树 我们先来理解一下什么是可视化树和逻辑树。 可视化树:包含最初指定的大多数元素(在XAML或.cs中)以及控件模板中的元素。 通俗点来讲,就是整个元素的构成树,从最上面的结点到最后一个结点(包括控件模板)。 逻辑树:是可视化树的一个子集,它省略了控件模板中的元素。 通俗点来讲,就是不 阅读全文
posted @ 2024-08-20 10:59 zhaotianff 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 起因 最近有遇到有小伙伴在实现TreeView不同层级使用不同数据模板时,遇到了一些问题。 经过查阅资料,我提供了两种解决方案。 第一种是使用TemplateSelector,这种方式可以根据ViewModel设置不同的数据模板。 第二种是根据数据动态创建数据模板。 这两种解决方案都是基于后台代码的 阅读全文
posted @ 2024-08-16 23:17 zhaotianff 阅读(8) 评论(0) 推荐(0) 编辑