随笔分类 - WPF
摘要:WPF日历控件的一个样式 WPF自带的日历控件样式可能会比较丑,要修改其样式看起来挺复杂的,实际上很简单,用Blend打开,修改三个模板,基本就能改变全部面貌,也很容易 先上图 样式如下: <Setter Property="FontFamily" Value="pack://application
阅读全文
摘要:在上一次的文章 "WPF OnApplyTemplate 不执行 或者执行滞后的疑惑" 谈到怎么正确的开发自定义控件,我们控件的样式中,属性的绑定一般都是用 来完成,如下一个基本的按钮样式: <Setter Property="FocusVisualStyle" Value="{DynamicRes
阅读全文
摘要:OnApplyTemplate 不执行 平时如何开发自定义控件的 在WPF自定义控件开发的过程中遇到了这样一个问题,属性更改事件在OnApplyTemplate之前执行。我在写自定义控件的时候,喜欢通过OnApplyTempalte重写方法获取到Style中的所有控件,进而在属性更改通知时修改这些控
阅读全文
摘要:WPF自定义分页控件 做了许久伸手党,终于有机会贡献一波,搜索一下WPF分页控件,还是多,但是不太通用,主要就是样式问题,这个WPF很好解决,还有一个就是分页控件嘛,只关心几个数字的变动就行了,把页码改变事件暴露出来,数据的加载在这里就做就行,所以这个分页控件很简单... 好像也没啥讲的,直接上代码
阅读全文
摘要:WPF,Slider,RangeSlider,MultiRangeSlider
阅读全文
摘要:WPF MVVM(Caliburn.Micro) 数据验证 "书接前文" 前文中仅是WPF验证中的一种,我们暂且称之为View端的验证(因为其验证规是写在Xaml文件中的)。 还有一种我们称之为Model端验证,Model通过继承IDataErrorInfo接口来实现,这个还没研究透,后面补上。 "
阅读全文
摘要:## EventToCommand在WPF中,并不是所有控件都有Command,例如TextBox,那么当文本改变,我们需要处理一些逻辑,这些逻辑在ViewModel中,没有Command如何绑定呢?这个时候我们就用到EventToCommand,事件转命令,可以将一些事件例如TextChanged...
阅读全文
摘要:## DispatcherHelper通常,WPF 应用程序从两个线程开始:一个用于处理呈现,一个用于管理 UI。呈现线程有效地隐藏在后台运行,而 UI 线程则接收输入、处理事件、绘制屏幕以及运行应用程序代码。所以我们的大多数操作都会在UI线程中执行,同时它也处理绘制屏幕,如果我们的一个操作相当耗时...
阅读全文
摘要:## ViewModelLocator这里先鼓舞下士气,ViewModelLocator很简单,甚至可以去掉,它不是Mvvm必须的。在初学Mvvm时,一般都是使用NuGet安装MvvmLight框架,总是会带上那么一个ViewModelLocator,并且还加入到了全局资源中,到底是干吗的? ...
阅读全文
摘要:## MessengerMvvm提倡View和ViewModel的分离,View只负责数据的显示,业务逻辑都尽可能放到ViewModel中,保持View.xaml.cs中的简洁(没有任何代码,除了构造函数),但是某些场景下也不必一定要保持View.xaml.cs中的简洁,例如动画。我们想要让界面酷炫...
阅读全文
摘要:### Mvvm简介当我们在开发WPF,SilverLight,WP程序时,会使用Mvvm这一架构模式。它是一个很笼统的架构模式概念。在.Net下,我所知道的Mvvm框架有* [MvvmLight](http://www.mvvmlight.net/)* [Caliiburn.Micro](http...
阅读全文
摘要:## ViewModelBase && ObservableObject在Mvvm中,ViewModel和Model都需要具有通知界面更新数据的能力,这都要借助于WPF中的*INotifyPropertyChanged* 接口,每一个ViewModel和Model都要去实现接口就太麻烦,于是作为Mv...
阅读全文
摘要:## RelayCommandMvvm最大的特点就是分离了View和ViewModel,将数据的显示和业务逻辑分开。使用WPF的Binding,我们不仅能够将数据从ViewModel绑定到View,同时也可以将行为绑定到View。例如,在主界面上点击一个按钮,这个按钮实际完成的操作是ViewMode...
阅读全文
摘要:### [MvvmLightToolKit](http://www.mvvmlight.net/)MvvmLightToolKit的[源...
阅读全文
摘要:### 数据验证WPF的Binding使得数据能够在数据源和目标之间流通,在数据流通的中间,便能够对数据做一些处理。`数据转换`和`数据验证`便是在数据从源到目标 or 从目标到源 的时候对数据的验证和转换。,发现CanExecute不能很好地工作了。一个简单的工程,只有MainWindow和MainWindowViewModel,代码如下MainWindow.xaml ...
阅读全文
摘要:例子 先来看一个例子 Person.cs MainWindow.xaml.cs 注意注释的地方 结果是TestName属性可以正确更新到UI上,而集合属性Names却不行(这里确实没有搞懂,求教之)。 其余的理解,有一篇写得很好 http://www.cnblogs.com/wpcockroach/
阅读全文
摘要:1.见鬼了? 项目中遇到这样的要求,一个Button用一个Adorner装饰,这个Adorner上又有一个Button,如下面这样 此时,我们在点击小Button的时候只希望处理小Button的事件,可是这时候,居然大Button的事件也触发了。按道理上讲,Adorner和Button不在可视化树的
阅读全文
摘要:一.基础知识 1.System.Printing命名空间 我们可以先看一下System.Printing命名空间,东西其实很多,功能也非常强大,可以说能够控制打印的每一个细节,曾经对PrintDialog失望的我看到了一丝曙光。 2.PrintDialog 可以看到PrintDialog除了构造函数
阅读全文
摘要:正在做一个打印机列表,从中选择一个打印机(System.Printing) var printServer = new LocalPrintServer(); PrintQueues = printServer.GetPrintQueues(); ...
阅读全文