- 博客(43)
- 资源 (5)
- 收藏
- 关注
原创 .NET异步编程模式(四)-TAP
TAP 是基于任务的异步模式,在 .NET Framework 4 中引入。TAP 取代了 APM 和 EAP,是推荐的异步编程模式。
2022-08-19 11:20:21
452
原创 .NET异步编程模式(三)
EAP(Event-based Asynchronous Pattern) 是基于事件的异步模式,在 .NET Framework 2.0 中引入。EAP 需要一个有 Async 后缀方法和一个或多个事件。EAP不再推荐用于新开发。
2022-08-15 10:02:42
543
原创 .NET异步编程模式(二)
在 C#1 的时候就包含了APM,在 APM 模型中,异步操作通过 IAsyncResult 接口实现,包括两个方法 BeginOperationName 和 EndOperationName ,分别表示开始和结束异步操作。
2022-08-15 09:59:42
309
原创 .NET程序配置文件操作(ini,cfg,config)
在程序开发过程中,我们一般会用到配置文件来设定一些参数。常见的配置文件格式为 **ini**, **xml**, **config**等。
2022-06-29 13:38:06
765
原创 Prism_07_WPF MVVM_复合程序视图布局
复合程序的界面(UI)是由松耦合的组件(View)组成,Prism 提供了这种页面布局的解决方案。
2022-02-21 11:46:51
454
原创 Prism_05_ViewModelLocator
ViewModelLocator 用于把 ViewModel 实例绑定到 View 的 DataContext.
2022-02-17 17:42:38
2034
原创 Prism_04_EventAggregator
在 MVVM 中,对于 View 和 ViewModel 之间的交互,可以使用 INotifyProperty 和 ICommand 来实现。而对于不同 ViewModel 之间的通信,为了实现低耦合,Prism 提供了 EventAggregator 。
2022-02-17 17:34:47
297
原创 Prism_06_Modules
通常,一个应用程序由不同的业务模块来组合而成,理想情况下,每个业务模块有独立的功能;业务模块之间是低耦合关系的;每个业务模块能够单独来开发测试和部署。这样程序是非常容易扩展、测试和维护,而Prism提供了将程序模块化的功能。
2022-02-17 17:28:46
257
原创 01_Prism介绍
Prism是一个框架,用于在WPF、Xamarin Forms 和 UNO/Win UI 应用程序中构建松耦合、可维护和可测试的XAML应用程序。
2022-02-16 11:38:11
555
原创 WPF_17_DataGrid
ListViewListView专门针对显示相同数据的不同视图而设计的,常用于显示每个数据项几部分信息的多列视图。ListView继承自ListBox类,并使用View属性进行扩展。从技术角度看,View指向继承自ViewBase类的任意实例。ViewBase是一个将两个样式捆绑在一起的包,其中一个样式应用到ListView控件(通过DefaultStyleKey属性),而另一个应用到ListView控件中的项(通过ItemContainerDefaultStyleKey属性)。事实上,为创建能够自定
2022-01-27 15:44:21
395
原创 02_信息的表示和存储
现代计算机存储和处理的信息以二值信号表示,这些二进制数字称为位(bit).把位组合在一起,再加上某种解释,就能够表示任何有限集合的元素。信息存储大多数计算机使用8位的块,或者字节(byte),作为最小的可寻址的内存单位,而不是访问内存中单独的位。程序将内存视为一个非常大的字节数组,称为虚拟内存(virtual memory).内存的每个字节都有唯一的数字来标识,称为它的地址(address),所有可能地址的集合就称为虚拟地址空间(virtual address space).每个程序对象可以简单地视为一
2021-12-28 13:28:36
614
原创 WPF_13_自定义元素
当希望微调元素的外观时,自定义元素并非最佳选择。如果希望改变底层的功能时,自定义元素就十分有用了。一般在专门的类库程序集(DLL)中放置自定义元素,可在多个程序之间共享自定义元素。
2021-12-07 17:26:40
214
原创 WPF_12_控件模板
每个WPF控件都有一个内置的方法,用于确定如何渲染控件(作为一组更基础的元素)。这个方法称为 控件模板(control template) ,是用XAML标记块定义的。
2021-12-02 13:49:09
247
原创 WPF_11_样式和行为
WPF 提供了几个特性,允许为基本元素插入一些自己喜欢的东西,并标准化程序的可视化外观。样式(style)-组织和重用格式化选项的重要工具。行为(behavior)-封装一些通用的UI功能。样式<Window.Resources> <!--与资源一样,样式都有一个键名,通常以 Style 结尾--> <Style x:Key="BigFontButtonStyle"> <Setter Property="Control.F
2021-11-29 19:27:18
321
原创 WPF_性能优化
WPF(Windows Presentation Foundation)是微软推出的基于Windows的用户界面框架,运行在 .NET Framework 3.0及以上版本。WPF是基于DirectX引擎的,支持GPU硬件加速,在不支持硬件加速时也可以使用软件绘制。尽管WPF有诸多优点,有时我们还是会遇到性能问题,比如界面卡顿,内存泄漏等等。针对WPF程序的性能优化是一个宽泛的问题,本文是对我们这段时间以来所作工作的一个总结。图形硬件相同的程序在不同的硬件上运行,会有不同的表现。对渲染能力影响比较大的硬
2021-11-26 17:00:52
3098
原创 WPF_10_资源
WPF资源系统是一种保管一些列有用对象(画刷,样式,模板)的简单方法,从而可以更容易地重用这些对象。程序集资源是一块嵌入到编译过的程序集中的二进制数据。程序集资源可确保应用程序所需的图像或声音文件,另一方面对象资源是希望在某个位置定义并在其他几个位置重复使用的.NET对象。资源基础WPF允许在代码中以及在标记中的各个位置定义资源(和特定的控件,窗口一起定义,或整个应用程序中定义)。资源有许多优点:高效 - 通过资源定义对象,并在标记中的多个地方使用。可维护性 - 通过资源使用低级的格式化细节
2021-11-19 19:10:46
324
原创 WPF_09_命令
使用路由事件可相应广泛的鼠标和键盘动作,但事件是非常低级的元素。在实际应用过程中,功能被划分成一些高级的任务,可通过不同的动作和用户界面元素触发,包括主菜单、上下文菜单、键盘以及工具栏。定义这些任务-命令-并将控件连接到命令,从而不需要重复编写事件处理代码。更重要的,当命令不可用时,命令特性通过自动禁用控件来管理用户界面的状态。命令模型WPF命令模型由许多可变的部分组成:命令 : 命令表示程序任务,并跟踪任务是否能够被执行。然而命令不包含执行程序任务的代码。命令绑定 : 每个命令绑定针对界面的具体
2021-11-18 19:56:05
279
原创 WPF_08_元素绑定
数据绑定是一种关系,告诉WPF从源对象提取一些信息来设置目标对象的属性,这些属性始终是 依赖属性 。源对象可以是任何内容,可以是另一个元素,可以是数据对象或自己创建的数据对象。绑定元素<Slider Name="slider" /><TextBlock name="textBlock" Text="Test Text" FontSize="{Binding ElementName=slider, Path=Value}"/>数据绑定表达式使用 XAML 标记扩展(因此具有花
2021-11-18 09:48:00
145
原创 WPF_07_Application
WPF程序都是由 System.Windows.Application 类表示的一个实例,该类跟踪所有窗口,决定何时关闭程序,并引发可执行初始化和清除操作的程序事件。程序生命周期本质上,Visual Studio为 Application类使用的模板和窗口模板相同,默认该模板命名为 App.xaml .<Application x:Class="WindowDemo.App" xmlns="http://schemas.microsoft.com/winfx/2006/
2021-11-16 13:30:34
286
原创 WPF_06_控件
文章目录内容控件Content属性标签按钮ButtonToggleButton 和 RepeatButtonCheckBoxRadioButton工具提示特殊容器ScrollViewer通过代码进行滚动自定义滚动GroupBoxTabItemExpander文本控件多行文本选择文本拼写检查列表控件ListBoxComboBox基于范围的控件SliderProgressBar我的公众号WPF控件继承自 System.Windows.Control 类。包括以下控件:内容控件:可包含嵌套的元素。包括 La
2021-11-11 13:39:06
207
原创 WPF_05_路由事件
路由事件WPF用更高级的路由事件替换普通的.NET事件。路由事件具有更强传播能力,可在元素树中向上冒泡和向下隧道传播,并沿着传播路径被事件处理程序处理。与依赖属性一样,路由事件由只读的静态字段表示,在静态构造函数中注册,并通过标准的.NET事件定义进行封装。public abstract class ButtonBase : ContentControl{ // 定义 public static readonly RoutedEvent ClickEvent; // 注册
2021-11-03 16:33:12
300
原创 04_依赖属性
依赖属性是标准.NET属性的全新实现,是专门为 WPF 创建的。依赖属性可支持WPF中的样式设置、数据绑定、继承、动画及默认值。创建依赖属性第一步时定义表示属性的对象,它是 DependencyProperty 类的实例。属性信息应该始终保持可用,甚至可能在多个类之间共享这些信息,因此必须将 DependencyProperty 对象定义为与其相关联的类的静态字段。public class FrameworkElement: UIElement, ...{ public static rea
2021-11-01 19:50:34
126
原创 03_布局
WPF用不同的容器(container)来实现布局。布局包括两个阶段:测量(measure)阶段和排列(arrange)阶段。在测量阶段,容器遍历所有子元素,并询问子元素它们期望的尺寸。在排列阶段,容器在合适的位置放置子元素。布局容器不能提供任何滚动支持,滚动时由特定的内容控件-ScrollViewer-提供的。布局容器所有WPF布局容器都派生自 System.Windows.Controls.Panel 抽象类的面板,并提供了三个公共属性。名称说明Background
2021-10-29 20:25:30
90
原创 02_XAML
文章目录XAML基础XAML名称空间标记扩展附加属性嵌套元素特殊字符与空白我的微信公众号XAML(Extensible Application Markup Language的简写)是用于实例化.NET对象的标记语言。XAML对于WPF不是必须的。XAML基础XAML标准:XAML文档中的每个元素都映射为.NET类的一个实例。与所有XML文档一样,可在一个元素中嵌套另一个元素。可通过特性(attribute)设置每个类的属性(property)。XAML名称空间xmlns特性是XML中的
2021-10-29 17:25:43
119
原创 01_WPF概述
WPF概述Windows 图形演化高级API分辨率无关性WPF体系结构我的微信公众号Windows 图形演化在 WPF 之前,windows 开发一直使用本质上相同的显示技术。每个传统 windows 程序都依靠 windows系统的如下两个部分创建用户界面:User32 : 该部分为许多元素(比如窗口、按钮和文本框等)提供了熟悉的windows外观GDI/GDI+ :该部分为渲染简单形状、文本以及图像提供了绘图支持,但增加了复杂程度在WPF中底层的图形技术不再是GDI/GDI+,而是 Dir
2021-10-28 17:56:46
161
原创 Nginx部署
安装依赖包 yum -y install gcc gcc-c++ autoconf automake yum -y install pcre pcre-devel yum -y install zlib zlib-devel yum -y install openssl opnessl-devel下载编译Nginx cd /usr/local/src wget http://ngi...
2019-11-12 12:07:26
221
原创 正则表达式
正则表达式(regex)是一个字符串,用来描述匹配一个字符串集合的模式。对于字符串处理来说,正则表达式时一个强大的工具。可以用正则表达式来匹配,替换和分割字符串。匹配字符串//String.matches()"Java is fun".matches("Java.*);上面语句返回 true, "Java.*"是一个正则表达式,描述以Java开始,后面跟0个或者多个字符串。正则...
2019-11-12 10:08:39
143
原创 第1章 计算机,程序和Java概叙
文章目录什么是计算机?中央处理器(Central Processing Unit,CPU)内存存储设备通信设备操作系统控制和监视系统的活动分配和调配系统资源调度操作什么是计算机?一台计算机主要由中央处理器,内存,存储设备,输入设备,输出设备和通信设备组成。这些设备通过一个称为总线的子系统连接。在个人计算机中,总线搭载在主板上,主板是一个连接计算机各个部分的电路板。中央处理器(Central...
2019-11-04 13:41:03
113
原创 冒泡排序
冒泡排序(Bubble Sort)是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。最简单的交换//初级版,并非符合冒泡排序的思想//(java)void BubbleSort(List<int> list){ int i,j; for(i = 1; i < list.size(); i++) { for(j...
2019-09-17 09:48:06
166
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人