WPF
文章平均质量分 92
WPF框架开发小知识
MelonSuika
这个作者很懒,什么都没留下…
展开
-
WPF依赖属性优先级
在上篇文“依赖属性概述”中提到了依赖属性优先级,虽然知道了局部值具有最高优先级,但是细节上略去太多。这就导致了在实际遇到问题时,可能知道是优先级导致的,但不知道此时应该怎么处理。因此,有必要进一步学习优先级。原文地址这章是相当复杂了,如果对WPF和依赖属性没有一定了解,看原文根本看不懂。我觉得第一遍只要了解有优先级那么一回事儿,大致记一下设置属性的优先级顺序。后面遇到具体问题再细细分析。原创 2024-03-08 15:19:14 · 881 阅读 · 0 评论 -
WPF依赖属性概述
最近写的博文知识点都比较基础。因为写项目时总会遇到一些奇怪的问题,于是按我的性子,就会回过去学一遍。这归根到底还是自己基础太差,兜兜转转半天还得回来补习。这不,WPF都用了快两年了,又回来学习依赖属性了。原文地址。原创 2024-03-05 16:02:18 · 989 阅读 · 0 评论 -
WPF应用程序使用MVVM模式
这篇文是2009年2月份的,原文在原文地址。年代有些久远了。但整篇看下来,里面的思想放现在也仍是精髓的,甚至是许多当下主流框架的核心思想,所以决定过一遍学习学习。我一直以为技术点的学习固然重要,但技术随谈类的文也要看。因为技术点是学不完的,而有些随谈中的思想了解后会受益良多。因为这篇文本身讲的很口头了,所以简单以翻译的方式去学习。WPF可以为应用程序开发人员提供很多功能,学习使用这些功能需要转变思维方式。原创 2024-02-28 13:48:37 · 1144 阅读 · 0 评论 -
CAD图形导出为XAML实践
上位机通常有一个设备/场景界面,该界面用于清晰直观地呈现设备状态。如果界面要求不高,可以用组合简单图形和文字表示设备,并通过给图形变色等手段表示设备状态切换;如果画面要求高,需要做贴图动画甚至是三维模型以更炫酷的方式呈现设备状态。题外话有人可能会觉得这种画面做好看了没多大意义,炫酷画面加上动画不会带来实质性的软件提升,还会增加计算机资源消耗。不过实际情况下,上位机通常是跑在单台主机上的。此时,计算机资源是过剩的,至少不会因为几个动画增加不好的体验。原创 2023-10-17 14:30:21 · 654 阅读 · 0 评论 -
WPF——Control与Template理解
最近又翻看了下刘铁猛的《深入浅出WPF》,发现对模板章节中的部分内容有了更深的体会,所以写篇文扯扯。文章标题是Control与Template,翻译成控件与模板。将两者放一起不是无缘无故的,在WPF中,两者关系相当密切。写了这么多,主要就是谈了谈对控件以及两个模板的理解。这种理解更像是WPF开发(也不限于WPF)的内功,不对写代码直接产生效率提升,但会有长远的积极影响。原创 2023-09-12 15:22:17 · 913 阅读 · 0 评论 -
WPF_Application
该类封装了一个WPF应用程序。该类派生自DispatcherObject,实现了IQueryAmbient接口。Application类封装了一个WPF应用程序。Application实现了单例模式(Singleton Pattern),以提供对其窗口、属性和资源作用域服务的共享访问。通过Application.Current访问。通过Application.Current.Dispatcher可以将操作排队到UI线程中执行,这在跨线程操作中非常有用。原创 2023-04-11 11:09:02 · 456 阅读 · 0 评论 -
.NET_Dispatcher与DispatcherObject
提供用于管理线程工作项队列的服务。所以它是一个抽象的东西,用于管理线程工作项的。表示一个与Dispatcher关联的对象。原创 2023-04-10 21:21:31 · 568 阅读 · 0 评论 -
《深入浅出WPF》——x名称空间
此时,类充当的角色就是对象的“模具”,使用它创建出来的对象在型号(即内存大小)和内部布局上都完全一样。x:Shared一定要和x:Key配合使用,如果x:Shared的值为true,那么每次检索到这个对象时(共享对象),我们得到的都是同一个对象,否则,得到的是对象的一个新副本。在WPF中,几乎每个元素都有自己的Resources属性,这个属性是个“Key-Value”式的集合,只要把元素放进这个集合,这个元素就称为资源字典中的一项(item),当然,为了能够检索到该项,就必须为它添加x:Key。原创 2023-03-14 09:56:39 · 545 阅读 · 0 评论 -
《深入浅出WPF》——XAML语法及基础知识
下面是一段简单的xaml代码:这一大段代码,其中还有两个看着像主页地址的东西……它们都是些什么呢?让我们来一个一个地分析。XAML是一种由XML派生而来的语言,所以很多XML中的概念在XAML是通用的。比如,使用标签声明一个元素(每个元素对应内存中的一个对象)时,需要使用起始标签和终止标签,夹在起始标签和终止标签中的XAML代码表示隶属于这个标签的内容。如果没有什么内容,则这个标签为空标签,可以写为为了表示同类标签中的某个标签与众不同,可以给它的特征/特性(Attribu原创 2023-03-12 15:12:42 · 2372 阅读 · 0 评论 -
WPF_ObservableCollection基本使用及其注意项
ObservableCollection基本使用如上述代码示例所示。其中要注意的是,替换ViewModel中的绑定对象并不能真实替换ItemSource。还有ObservableCollection不是线程安全的,ItemSource绑定其后,不能跨线程(UI线程外)修改ObservableCollection,关于这点会另辟文进行介绍。原创 2023-02-20 16:39:45 · 2773 阅读 · 1 评论 -
《深入浅出WPF》——资源学习
我们把有用的东西称为资源。“兵马未动,粮草先行”——程序中的各种数据就是算法的原料和粮草。程序中可以存放数据的地方有许多,可以放在数据库里、可以存储在变量里。介于数据库存储和变量存储之间,我们还可以把数据存储在程序主体之外的文件里。外部文件与程序主体分离,这就有可能丢失或损坏,为了避免丢失或损坏,编译器允许我们把外部文件编译进程序主体、成为程序主体不可分割的一部分,这就是传统意义上的程序资源(也称为二进制资源)。原创 2022-08-20 13:18:43 · 941 阅读 · 0 评论 -
WPF——样式与模板
每次写blog一定是我遇到什么实际问题了。而这次的问题,和文章标题没有特别大的关系。因为上一篇文我讲到了自定义日历控件(Calendar)的事,在我改CalendarDayButtonStyle的过程中,我发现默认的Style中出现了大量的VisualState标签。但正如上文中所说,一个自身的WPF程序员或许对VisualState相关类也会感到陌生,更何况我呢。于是我决定,对VisualState相关类进行学习。我打开微软官网,搜了下VisualState,首先在Windows App SDK的内容中看原创 2022-08-05 17:46:28 · 3005 阅读 · 0 评论 -
WPF——自定义日历
先说说历史,当微软在2006年发布WPF时,所有人都认为它少了点东西,其中最明显的就是日历控件(calendarcontrols)。这很奇怪——毕竟,WinForms都有MonthCalendar和DateTimePicker控件,为什么不把它们直接移植到WPF上呢?但是将控件移植到WPF上并不是简单的更改属性和事件名称就能达成的(如果这么简单,我现在也不用写这篇文章了)。WPF控件必须是“无外观的”(lookless)。什么是无外观(lookless)?.....................原创 2022-07-31 21:16:14 · 2201 阅读 · 0 评论 -
使用ShowMeTheXAML来展示XAML代码
使用MaterialDesignThemes时,发现有个功能不错,就是显示控件的代码,一开始我以为这个功能是程序里写死的,人工把该控件的代码添加到一个富文本框中,然后点击控件显示出来。后来看了看MD的源码,发现并不是,它用到一个叫ShowMeTheXAML的插件。于是找到ShowMeTheXAML插件,学习使用一下。当然也可以图形化操作在NuGet中直接搜索ShowMeTheXAML,找到MSBuild安装即可,这两操作都会给你装上ShowMeTheXAML 基础包。这步是可选的,由于默认的代原创 2022-06-23 09:17:12 · 702 阅读 · 0 评论 -
WPF初级——HierarchicalDataTemplate
想MVVM模式实现一个侧边栏,一开始想做成下图MaterialDesignThemes里的这种类型的,这种效果实现起来很简单,ListBox+DataTemplate,然后绑定一个VM的集合即可。但是呢,条目多了之后,它会特别长,而且逻辑关系上部分条目是并列关系,部分条目是父子关系,显然用树状视图TreeView表现比较好。于是问题就来了,ListBox绑定线性的集合即可,线性的视图和线性的数据集合是对应的。那树状的TreeView该绑定怎样的集合呢?说到底,我就是想后台的数据结构逻辑上和前台显示视图原创 2022-06-22 08:42:58 · 2413 阅读 · 0 评论 -
我的代码组态(持续更新ing)
我的组态,持续更新ing原创 2022-06-20 11:18:14 · 209 阅读 · 0 评论 -
WPF——事件绑定命令
我们都知道WPF中的命令在结合MVVM模式的框架使用之后(框架重新实现了ICommand),可以解耦。但并不是所有控件都可以绑定命令的,比如TextBox、ComboBox等。在使用这类控件时,如果你想让它的某个事件激发时调用ViewModel中的方法,往往需要把ViewModel中的方法暴露给View,然后在事件处理器中调用。这种调用方式增加了耦合度,虽然从短期实现来讲也没啥问题,但会让强迫症患者非常难受。目前收集了两种解决方法:这使UIElement类自带的一个属性,你可以给它添加鼠标按键绑定和键盘原创 2022-06-16 08:51:57 · 4147 阅读 · 0 评论 -
WPF——实现MVVM模式的数据分页栏
数据分页栏是很常用的功能,基本上只要系统涉及增删改查就少不了它。当然,这是一个非常成熟的功能,网上实现方法很多,实现起来也都大同小异,无非就是一张列表加一堆按钮(和其他常用控件)。那么我选了一个相对来说功能较全的分页栏,实现一下它的大部分功能。下面是示例图:整个界面分上下两大部分,第一部分是个数据视图(View),第二部分是各种控件组合在一起的复合框。虽然看起来数据视图部分占比较大,但由于View这个东西系统往往已经帮我们实现了大部分功能,所以其实复合框部分才是实现的大头。为了减少不必要的代码,我对上表原创 2022-06-14 21:30:45 · 3149 阅读 · 0 评论 -
WPF——GridView
项目中要用到一个数据分页栏,虽然自己没有实现过,但凭经验感觉它和ListBox/ListView有关。于是去网上搜了下WPF 数据分页栏,果然很多实现都用到了ListView。于是拣了一种比较简单的实现学习,其中包含下面代码:ListView.View的标签内出现了GridView。在我印象中Grid是网格式的,而List是列表式的,所以我很好奇两者为什么可以混到一起。当然从类的关系上来看,应该是两者都继承了一个共同的父类。那么为了能使用起来更“自如”,对GridView有个系统的了解,还是有必要学习一原创 2022-06-13 15:34:13 · 4404 阅读 · 0 评论 -
WPF——ContentPresenter
文章目录一、前言二、认识2.1. 涉及名词释义2.2. 定义2.3. 例子2.4. 注解*一、前言 ~~~~ 这个类单独拿出来讲,是因为它既很重要又很迷惑。说重要是因为一般DataTemplate的载体(作用对象)就是它,而且你用MSBlend敲开一个控件你会发现每每都存在它。说迷惑是因为,你在相关类的属性中发现不了它。二、认识2.1. 涉及名词释义 ~~~~原创 2022-05-26 20:31:01 · 6932 阅读 · 2 评论 -
《深入浅出WPF》——模板学习
一、前言 图形用户界面(GUI,Graphic User Interface)应用较之控制台界面(CUI,Command User Interface)应用程序最大的好处就是界面友好、数据显示直观。CUI程序中数据只能以文本的形式线性显示,GUI程序则允许数据以文本、列表、图形等多种形式立体显示。 用户体验在GUI程序设计中起着举足轻重的作用——用户界面设计成什么样子看上去才够漂亮?控件如何安排才简单易用并且少犯错误?(控件并不是越复杂原创 2022-05-24 13:09:07 · 1597 阅读 · 2 评论 -
WPF中的事件驱动与消息驱动
前言 学习WPF的过程中遇到了事件、命令这些概念,而书中在介绍这些概念时又扯出了新概念——消息(也可以叫旧概念,因为这个机制比较老旧,但由于我没有学习过WinForms编程,所以对我来说是新概念)。那么消息与事件机制各自是怎样的,有什么区别呢?本文结合书中提到的和网上的文来整理一下这些概念。消息驱动场景 首先说一个Windows编程中常见的场景,点击窗体上的一个按钮,然后程序执行一定的操作。 &n原创 2022-05-20 10:15:25 · 785 阅读 · 0 评论 -
《深入浅出WPF》——命令学习
@提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、为何要有命令?二、命令系统的基本元素与关系1.命令系统的基本元素2.基本元素之间的关系总结前言 ~~~~ 学习了WPF事件之后,你会发现还有命令章节。那命令和事件有何不同,为什么需要命令呢?本文来研究一下WPF中的命令。一、为何要有命令? ~~~~原创 2022-05-18 16:09:18 · 1139 阅读 · 0 评论 -
《深入浅出WPF》——事件学习
目录WPF中的事件WPF中的树形结构导入WPF中的事件事件在WPF中升级成了路由事件,这种机制在很大程度上减少了对程序员的束缚,使得程序设计与实现变得更加灵活,模块之间的耦合度(coupling degree)进一步降低(因为不同模块间不需要指名道姓的列出绑定/关联)。WPF中的树形结构路由事件有路由两字。路由,可以通俗地理解为路径由来(或者在链路中传递经过的路径),路由器就是这样,记录在网络中传递的经由点,供消息包在节点间传递中转使用。那既然WPF中有路由事件,那路由事件是在怎样的链路中传递呢?原创 2022-05-17 14:14:45 · 3463 阅读 · 0 评论