WPF- 关于自定义Calendar控件

由于项目对更改日期 时间的需要,接触了一下Calendar控件。结果发现在这么强大的控件的背后,微软其实并没有为开发人员留有很强的扩展性。

(项目要求的Calendar控件能对一些特定的日期进行特殊处理,如高亮,以及类似于Outlook的Calendar一样,可以编辑会议,提醒什么的。)

Calendar里有一些控件如:CalendarItem,CalendarButton,CalendarDayButton。这些控件都被定义成了sealed。所以当我们要对Calendar控件做一些自定义的时候,我们就不能按照对待普通的其他控件的方式对待它(常规做法是我们创建一个控件,然后继承我们需要自定义的控件,为其添加一些依赖属性什么的。。)。 所以剩下的解决方案是

1.创建一个扩展性更强的Calendar控件。

2.使用Converter处理。

对于方案1,那肯定是吃力不讨好,Calendar控件本身相当的复杂,自己创建一个类似的控件费时费力,而且肯定不免有许多Bug。因此剩下的我们最好是使用方案2(Charles Petzold在MSDN杂志中有一篇文章讲的就是这个,请参考:Customizing the New WPF Calendar Controls)。

对于方案2. 我现在是在Converter中定义了一些属性(一个DateTime的集合,一个String的集合),然后在上面提及的Sealed的控件的Template中通过Converter做一些处理。

 

有关Calendar控件的扩展,Codeproject上有一些文章,参考:

rudigrobler  Creating an Outlook Calendar using WPF 系列

David Veeneman 的 Extending the WPF Calendar Control

 

 

 

 

转载于:https://www.cnblogs.com/iwpf/p/3714617.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[文摘]上软解散相关

真实系列文摘 之 上海软星仙剑开发组解散真正内幕-----附.上软人最后留给玩家的话我不是个疯狂的仙剑迷, 但我有朋友是; 我不是个对看不管惯的社会现象能挺身而出的人, 但还是喜欢去在意去关心那些事...下面这个算不上是什么新闻了, 但如过是玩过仙剑系列觉得还不错的人, 对游戏…

Apache Spark 1.5发布,新特性一览

Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架。最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一。Apache Spark社区刚刚发布了1.5版本,明略数据高级工程师梁堰波解析了该版本中的众多新特性&am…

js正则表达exec和match的区别(转)

转自:http://blog.csdn.net/fushou/article/details/6934608 以前用js很少用到js的正则表达式,即使用到了,也是诸如邮件名称之类的判断,网上代码很多,很少有研究,拿来即用。 最近开发遇到一些需要使用正则表达式&#…

微软推出免费在线系统诊断工具--不用手动下载

在运行框中输入以下地址:\\live.sysinternals.com,所有工具都在Tools下,Files目录有可供下载的压缩包。。Microsoft Corp. has launched a beta service that lets Windows users launch the Sysinternals library of free diagnostic and tr…

开源软件

邮件服务器: Postfixftp服务器: vsftpd统计: nginx access log awstats 统计: google统计 google分析 腾讯分析 分布式锁及配置管理:Zookeeper php框架:thinkphp运维监控: cacti数据同步&#…

cad.net 获取所有已经安装的cad版本信息

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\Hardcopy 转载于:https://www.cnblogs.com/JJBox/p/11381254.html

Restangular的使用

2019独角兽企业重金招聘Python工程师标准>>> // First way of creating a Restangular object. Just saying the base URL var baseAccounts Restangular.all(accounts); // This will query /accounts and return a promise. baseAccounts.getList().then(functio…

浅析数据质量检查

What are the four broad categories of data quality checks? Provide an implementation technique for each. 数据质量检查的四大类是什么?为每类提供一种实现技术。 答:数据质量检查是ETL工作中非常重要的一步,主要关注一下四个方面。 1…

在用dw.GetSqlSelect()获得到的Sql语句出现PBSELECT( VERSION的解决办法

在用dw.GetSqlSelect()获得到的Sql语句出现PBSELECT( VERSION的解决办法: 把数据窗口的数据源转换到syntax模式下就行了 ! 转载于:https://www.cnblogs.com/Tonyyang/archive/2008/06/03/1212689.html

刚发现的2011年最给力的春联

上联:房价涨.地价涨.油价涨.电价涨.水价涨.粮价涨.肉价涨.蛋价涨.菜价涨.药价涨.这也涨.那也涨.怎一个涨字了得.涨了还涨。 下联:上学难.参军难.就业难.买房难.租房难.择偶难.结婚难.育儿难.就医难.养老难.男也难.女也难.看世间难字当头.难上加难 横批:活…

SQL Server的镜像是基于物理块变化的复制 镜像Failover之后数据的预热问题

SQL Server的镜像是基于物理块变化的复制 镜像Failover之后数据的预热问题 基于物理块变化的复制,没有并行也是很快的。 逻辑复制的日志是按事务结束的时间排序的,而物理复制是与事务无关的,只要发生了改变,就可以立即传送到备库&…

VSS不需要验证自动登录的问题

新项目要开始了,搭建好开发环境以及项目框架后,遇到第一个问题就是我自己的机子打开VS不需要登陆VSS就直接打开了解决方案,而其他的同事则没有遇到这样的情况,于是搜索了下原因,发现是设置问题: 1,在VSS管理器中》工具》选项》允许网络用户名自动登录 这个选项去掉 …

说说“开源杀死商业开发工具”

今天在Solidot看到一条很有意思的短文,标题是“开源杀死商业开发工具”,其文如下: UNA,源自拉丁形容词“together”,是一种协作式的实时源代码开发环境,允许两个或更多的开发者同时编辑相同的代码。支持大部…

ubuntu22.04 安装vscode

安装 Visual Studio Code(VSCode)在 Ubuntu 22.04 系统上是一个简单的过程。以下是步骤指南: 更新系统软件包列表: 打开终端,并执行以下命令来更新您的系统软件包列表: sudo apt update安装依赖包&#xff…

(转)一篇令所有游戏圈的兄弟汗颜的文章

一篇让我看了一个小时的文章,看到了自己的粗浅,有些问题也许只有加入游戏行业了才更有体会1、无休止的抄袭回想起上个世纪末,华人游戏圈还处于原始阶段,那时候随便竖几条枪占个山头就敢说自己是做游戏的,拿出来的东西勉…

mybatis学习教程中级(十)mybatis和ehcache缓存框架整合(重点)

1、前言 前面讲解了mybatis的一级、二级缓存。一级然并卵(spring整合后),二级还是有用的。我们现在来看看用ehcache来维护管理二级缓存。不要问我为什么,因为都这么用!!!java是框架语言&#x…

八、开发者工具和指南(四) Orchard dependencies and libraries

本文列举了Orchard项目中的依赖,和Orchard使用它们的简介.依赖的副本在源码库的lib目录中,包含了它们各自的licenses,也能在CREDITS.txt文件中看到它们的归属. Akismet 这是Orchard中的默认的垃圾保护服务. ANTLR v3 这是语言识别工具,提供了构造识别器的框架,解释程序,编译器和…

如何使用三态工作流 - [MOSS 2007应用日记]

MOSS 2007的一个很重要的功能就是提供了工作流,让我们可以结合工作流来实现各种需求,系统提供了几种默认的工作流供大家使用,“三态工作流”就是默认的一种。 现在通过一个模拟实验来看看怎么使用“三态工作流”:在行政部子网站下…

微信小程序遍历wx:for,wx:for-item,wx:key

微信小程序中wx:for遍历默认元素为item,但是如果我们设计多层遍历的时候我们就需要自定义item的字段名以及key的键名 wx:for"{{item.goodsList}}" wx:for-item"ite" wx:for-key"idx" wx:key"{{idx}}" 这样子元素就被设置成…

Linux下samba服务的错误处理

错误显示:解决方法:在/etc/samba/smb.conf 文件里有一行自己修改过hosts allow 192.168.x.x x.x.x.x在这里加上自己的充当客户端主机的ip地址即可转载于:https://blog.51cto.com/luochen2015/1693712