5

WPF: 深入理解 Weak Event 模型

在之前写的一篇文章(XAML: 自定义控件中事件处理的最佳实践)中,我们曾提到了在 .NET 中如果事件没有反注册,将会引起内存泄露。这主要是因为当事件源会对事件监听者产生一个强引用,导致事件监听者无法被垃圾回收。 在这篇文章中,我们首先将进一步说明内存泄露的问题;然后,我们会重点介绍 .NET 中 ...

WPInfo 发布于 2018-02-24 13:46 评论(0)阅读(302)
8

WPF: WPF 中的 Triggers 和 VisualStateManager

在之前写的这篇文章 WPF: 只读依赖属性的介绍与实践 中,我们介绍了在 WPF 自定义控件中如何添加只读依赖属性,并且使其结合属性触发器 (Trigger) 来实现对控件样式的改变。事实上,关于触发器,在 WPF 中除了属性触发器,还有事件触发器 (EventTrigger) 和数据触发器 (Da ...

WPInfo 发布于 2018-02-20 10:51 评论(4)阅读(385)
5

WPF: 只读依赖属性的介绍与实践

在设计与开发 WPF 自定义控件时,我们常常为会控件添加一些依赖属性以便于绑定或动画等。事实上,除了能够添加正常的依赖属性外,我们还可以为控件添加只读依赖属性(以下统称“只读属性”),以增加控件的灵活性。 这听起来有些矛盾。只读依赖属性,只能读不能写,却又怎么能提高控件的灵活性呢?想想我们常用的 I ...

WPInfo 发布于 2018-02-09 17:31 评论(0)阅读(316)
2

SoftWareHelper

SoftWareHelper 环境 Visual Studio 2017,.Net Framework 4.0 SDK GitHub源码:https://github.com/yanjinhuagood/SoftWareHelper ...

闫驚鏵 发布于 2018-02-07 16:24 评论(4)阅读(76)
10

XAML: 自定义控件中事件处理的最佳实践

在开发 XAML(WPF/UWP) 应用程序中,有时候,我们需要创建自定义控件 (Custom Control) 来满足实际需求。而在自定义控件中,我们一般会用到一些原生的控件(如 Button、TextBox 等)来辅助以完成自定义控件的功能。 自定义控件并不像用户控件 (User Control ...

WPInfo 发布于 2018-02-06 17:19 评论(12)阅读(571)
1

VS下WPF自定义控件的基本步骤和基本代码实现

一、自定义控件的基本步骤: (本示例项目名称为:W;添加的自定义控件名称为) 1、 在“解决方案资源管理器”窗口的项目名上: 右击à添加à新建项(Ctrl+Shift+A) 2、则会弹出如下窗口,在该窗口中选择“自定义控件(WPF)”并修改类“名称”,点击“添加” 3、添加成功后则会在该项目中生成C ...

博轩客园 发布于 2018-02-06 15:30 评论(0)阅读(141)
27

MVVM之旅(1)创建一个最简单的MVVM程序

这是MVVM之旅系列文章的第一篇,许多文章和书喜欢在开篇介绍某种技术的诞生背景和意义,但是我觉得对于程序员来说,一个能直接运行起来的程序或许能够更直观的让他们了解这种技术。在这篇文章里,我将带领大家一步一步创建一个最简单的MVVM程序,程序虽然简单,但是却涵盖了MVVM的基本要素,对于那些还不是很了 ...

Zeek 发布于 2018-02-06 13:57 评论(50)阅读(3308)
0

WPF IValueConverter and IMultiValueConverter

1. 实现DataGrid column的显示和隐藏功能; (1). 定义ContextMenu ,该ContextMenu仅可使用于DataGrid的DataGridColumnHeader; (2). 自定义显示隐藏的制转换器; 2. 在实现DataGridColumn Filter 功能时,可 ...

积跬步---行千里 发布于 2018-02-03 11:57 评论(0)阅读(64)
2

WPF 使用DMSkin for WPF 快速搭建漂亮的WPF程序

DMSkin-for-WPF是一个基于WPF的.Net WPF开源界面库,实现了无边框的WPF开发方案,内置部分控件模板. 你可以参照模板自行修改完善。(以下简称DFW)。 核心 DFW实现了比较完美的无边框窗体方案,并且拖拽全部采用WIN32消息实现。拖拽依靠桌面边缘完美,高DPI支持,窗体不会变 ...

梦机器 发布于 2018-02-01 13:09 评论(3)阅读(389)
22

WPF 简易新手引导

这两天不忙,所以,做了一个简易的新手引导小Demo。因为,不是项目上应用,所以,做的很粗糙,也就是给需要的人,一个思路而已。 新手引导功能的话,就是告诉用户,页面上操作的顺序,第一步要做什么,第二步要做什么,以此类推,然后,最终关闭新手引导页面。 以我的习惯,还是先给大家看看效果。 效果展示的很简单 ...

衆尋 发布于 2018-01-31 13:56 评论(23)阅读(1686)
6

MVVM探索:从ViewModel关闭Window的最佳实践

在WPF里使用MVVM开发的时候,似乎总是不可避免的会遇到这样一个问题:ViewModel在处理完业务之后需要关闭这个Window,这时候要怎么处理? 网上有很多解决方案:有的在ViewModel抛出一个事件,在View端使用(XXXViewModel)this.DataContext的方式去响应事 ...

Zeek 发布于 2018-01-30 17:18 评论(10)阅读(603)
0

使用异步方法在XAML中绑定系统时间

最近的工作需要在程序界面上显示实时的系统时间,网上查了查大部分都是用Timer或者线程来实现。 个人非常不喜欢用Timer,感觉这东西有点太耗资源,然后思考了下觉得更好的方法应该是使用异步的方法在委托中更新时间,比线程简单,效率和性能上又要比Timer好很多。 实现方法很简单啦,先定义一个DateT ...

奋发的小铁匠 发布于 2018-01-30 10:56 评论(10)阅读(124)
0

WPF 自定义图表(柱状图,曲线图)

1.功能 实现图表的数据绑定,动态绑定,属性更改绑定。 本文提供了一种思路。 2.原理 使用canvas绘制,使用反射来确定属性的绑定。 3.效果: 柱状图效果: 曲线图效果: 感谢阅读。 源码地址: https://files.cnblogs.com/files/lizhijian/ChartBa ...

冷火虫 发布于 2018-01-25 16:23 评论(0)阅读(245)
0

WPF 从文件加载字体

本文告诉大家从文件加载字体。在wpf 使用 fontfamily 显示指定的 ttf 显示字体 ...

lindexi 发布于 2018-01-25 12:52 评论(0)阅读(86)
1

加载大量控件

1.将线程设置为应用程序空闲处理 Dispatcher.Invoke(new Action(() => { 加载控件; }), System.Windows.Threading.DispatcherPriority.ApplicationIdle); 2.提示等待框 在新线程中启动等待框 http: ...

kaury 发布于 2018-01-23 14:13 评论(1)阅读(130)
5

WPF: WpfWindowToolkit 一个窗口操作库的介绍

在 XAML 应用的开发过程中,使用 MVVM 框架能够极大地提高软件的可测试性、可维护性。MVVM 的核心思想是关注点分离,使得业务逻辑从 View 中分离出来到 ViewModel 以及 Model 中,从逻辑上来讲,这也是业务逻辑应该处的位置。 具体来说,借助于数据绑定 (Data Bindi ...

WPInfo 发布于 2018-01-20 11:32 评论(4)阅读(762)
0

有没有大神知道什么样的wpf什么样的控件能设置成这样

如图,我是用一个ListBox来排列的,但是怎么让它竖着排列呢 ...

抠脚大汉的脚 发布于 2018-01-19 17:24 评论(2)阅读(248)
0

wpf APlayer 播放

进入 迅雷开发者中心 下载最新SDK与解码库 注:解压最新SDK,运行install.bat。 解压完美解码库将codecs文件拷贝到项目Debug下 转载https://www.cnblogs.com/yanjinhua/ ...

闫驚鏵 发布于 2018-01-15 17:23 评论(4)阅读(219)
1

WPF自定义Window样式(2)

目录: WPF自定义Window样式(1) WPF自定义Window样式(2) 1. 引言 在上一篇中,介绍了如何建立自定义窗体。接下来,我们需要考虑将该自定义窗体基类放到类库中去,只有放到类库中,我们才能在其他地方去方便的引用该基类。 2. 创建类库 接上一篇的项目,先添加一个类库项目stonem ...

stonemqy 发布于 2018-01-11 16:54 评论(5)阅读(304)
2

WPF自定义Window样式(1)

目录: WPF自定义Window样式(1) WPF自定义Window样式(2) 1. 引言 WPF是制作界面的一大利器。最近在做一个项目,用的就是WPF。既然使用了WPF了,那么理所当然的,需要自定义窗体样式。所使用的代码是在网上查到的:原文链接。 首先上原始源码。 2. 创建项目 创建空白项目st ...

stonemqy 发布于 2018-01-11 15:56 评论(5)阅读(287)