博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF月视图控件
阅读量:4676 次
发布时间:2019-06-09

本文共 1569 字,大约阅读时间需要 5 分钟。

原文:

简介

在做一个应用时,需要做成日历月视图的形式。自己做较麻烦,于是上网找找看,在CodeProject上发现了这个,可是程序的后台是用VB写成的。虽然我不会写VB,但是阅读也能懂个八九不离十。于是将其改写为C#,做了些改进,使其更通用。效果图如下:

使用方式较简单,在XAML中声明,然后在代码中使用。支持在定义自每天事项界面和双击事件。

XAML声明:

后台代码使用:

using MonthView.EventArgs;using System.Windows;namespace MonthViewTest{    ///     /// MainWindow.xaml 的交互逻辑    ///     public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();            //事项源            TestMonthControl.DateTimeEvents = DiaryCache.Diaries;            //事项界面工厂            TestMonthControl.DateTimeEventControlFactory=new DiaryBreifControlFactory();            TestMonthControl.DayBlankDoubleClicked += AddNewDiary;        }        ///         /// 日期控件双击的处理        ///         ///         private void AddNewDiary(DayEventArgs e)        {            var diary = new Diary            {                HappenTime = e.DayTime,            };            var wnd = new DiaryWindow            {                Diary = diary,                Title="添加日记",                Owner = Application.Current.MainWindow            };            if (true == wnd.ShowDialog())            {                DiaryCache.Diaries.Add(wnd.Diary);            }        }    }}

原理

代码结构如下:

核心代码位于DayControl中。构建界面过程如下:利用System.Globalization.Calendar计算出月份的总天数,再根据当月第一天为星期几计算出总共的周数。将相应周数的周控件加入到月控件,再依次将一个月中每天对应的天控件放入其对应的周控件。

缺点:事项列表需一次性加载到内存中,可修改代码利用委托按需加载。控件不支持泛型,如果不需要在XAML中使用,可修改代码使其支持泛型。

代码

博客园:。

GitHub:。

posted on
2019-01-11 10:06 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/10253722.html

你可能感兴趣的文章
HashSet、LinkHashSet、TreeSet总结
查看>>
手机号码输入格式化,数字三三四的输入;手机正则校验输入是否合理及提示;...
查看>>
抽象类
查看>>
CSS3 背景
查看>>
WPF DataGrid 之数据绑定
查看>>
c语言之gdb调试。
查看>>
位反转的最佳算法
查看>>
常用面试问题
查看>>
第一个爬虫
查看>>
Java面试知识点之Java基础
查看>>
老外的前端面试题
查看>>
架构:新浪架构师谈微博架构
查看>>
SQL 语句速查
查看>>
女孩·有义务让男孩走向成熟,·男孩·有责任让女孩学着长大(精简版)
查看>>
discuz 删除指定条件的资讯
查看>>
Android上下文菜单ContextMenu
查看>>
JavaScript Number 对象 Javascript Array对象 Location 对象方法 String对象方法
查看>>
Python & Django 学习笔记
查看>>
python第四天练习题
查看>>
【bzoj4543】Hotel加强版(thr)
查看>>