wpf日历控件制作过程分析(2) 自定义样式属性

接上篇wpf日历控件制作过程分析(1) 定义header

在header中,我们看到了定义一个自定义样式TitleStyle

1.自定义样式

看后台代码定义

Code

/**//// <summary>
     /// The DependencyProperty for the TitleStyle property.
     /// Flags:       none
     /// Default Value:   null
     /// </summary>
     public static readonly DependencyProperty TitleStyleProperty =
         DependencyProperty.Register(
             "TitleStyle",
             typeof(Style),
             typeof(MonthCalendar),
             new FrameworkPropertyMetadata(
                 (Style)null));

     /**//// <summary>
     /// TitleStyle property
     /// </summary>
     public Style TitleStyle
     {
       get { return (Style)GetValue(TitleStyleProperty); }
       set { SetValue(TitleStyleProperty, value); }
     }

应该说,是比较简单的,默认样式为null,如果指定了样式的话,则会覆盖默认的样式

2.不重叠选择样式

为日历的前进和后退按钮定义两个样式

Code

/**//// <summary>
     /// The DependencyProperty for the PreviousButtonStyle property.
     /// Flags:       none
     /// Default Value:   null
     /// </summary>
     public static readonly DependencyProperty PreviousButtonStyleProperty =
         DependencyProperty.Register(
             "PreviousButtonStyle",
             typeof(Style),
             typeof(MonthCalendar),
             new FrameworkPropertyMetadata(
                 (Style)null, new PropertyChangedCallback(OnPreviousButtonStyleChanged)));

     /**//// <summary>
     /// PreviousButtonStyle property
     /// </summary>
     public Style PreviousButtonStyle
     {
       get { return (Style)GetValue(PreviousButtonStyleProperty); }
       set { SetValue(PreviousButtonStyleProperty, value); }
     }

     private static void OnPreviousButtonStyleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
     {
       ((MonthCalendar)d).RefreshPreviousButtonStyle();
     }

     /**//// <summary>
     /// The DependencyProperty for the NextButtonStyle property.
     /// Flags:       none
     /// Default Value:   null
     /// </summary>
     public static readonly DependencyProperty NextButtonStyleProperty =
         DependencyProperty.Register(
             "NextButtonStyle",
             typeof(Style),
             typeof(MonthCalendar),
             new FrameworkPropertyMetadata(
                 (Style)null, new PropertyChangedCallback(OnNextButtonStyleChanged)));

     /**//// <summary>
     /// NextButtonStyle property
     /// </summary>
     public Style NextButtonStyle
     {
       get { return (Style)GetValue(NextButtonStyleProperty); }
       set { SetValue(NextButtonStyleProperty, value); }
     }

     private static void OnNextButtonStyleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
     {
       ((MonthCalendar)d).RefreshNextButtonStyle();
     }

时间: 2024-12-16 03:22:28

wpf日历控件制作过程分析(2) 自定义样式属性的相关文章

wpf日历控件制作过程分析(1) 定义header

希望通过分析能更好的理解wpf控件的开发 一.日历的header布局 包含两部分,两个按钮和一个Title 首先定义按钮的样式(随自己定),可以先定义几个状态为普通状态,鼠标经过状态,按下状态和禁用4个状态显示不同的样式.其中按钮上还有一个小三角.所以还要定义一个三角的Geometry 代码开始 1.画出Geometry(涉及知识点为Geometry的画法及迷你语法,如M Z等) <PathGeometry x:Key="geometry" Figures="M0,0

wpf日历控件制作过程分析(3) 定义DayHeaders

<!--DayHeaders--> <Grid x:Name="DayHeaders" Grid.Column="1"> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> <ColumnDefinition/> <ColumnDefinition/> <ColumnDefinition/> &

WPF自定义控件与样式(7)-列表控件DataGrid与ListView自定义样式

原文:WPF自定义控件与样式(7)-列表控件DataGrid与ListView自定义样式 一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: DataGrid自定义样式: ListView自定义样式: 二.DataGrid自定义样式 DataGrid是常用的数据列表显示控件,先看看实现的效果(动态图,有点大): DataGrid控件样式结构包括以下几个部分

android-自定义控件引用不到自定义的属性值

问题描述 自定义控件引用不到自定义的属性值 <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="Bottom"> <attr name="oneText" format="string"/> <attr name="twoText" f

iOS自定义日历控件的简单实现过程_IOS

因为程序要求要插入一个日历控件,该空间的要求是从当天开始及以后的六个月内的日历,上网查资料基本上都说只要获取两个条件(当月第一天周几和本月一共有多少天)就可以实现一个简单的日历,剩下的靠自己的简单逻辑就OK了,下面开始自己从开始到完成的整个过程 1.首先做NSDate类目,扩展一些方法让日期之间转换更加方便 #import <Foundation/Foundation.h> @interface NSDate (LYWCalendar) #pragma mark - 获取日 - (NSInte

WPF中的日历控件

一直很奇怪, WPF中怎么没有日历控件, 这给开发带来了些不便. 这里找到了一个日历控件,是Microsoft开发的, 但其只相当与.net2.0中的普通日历控件,而没有Vista中日历控件那么酷. 本文配套源码

Android使用GridLayout绘制自定义日历控件_Android

效果图 思路:就是先设置Gridlayout的行列数,然后往里面放置一定数目的自定义日历按钮控件,最后实现日历逻辑就可以了. 步骤: 第一步:自定义日历控件(初步) 第二步:实现自定义单个日期按钮控件 第三步:将第二步得到的控件动态添加到第一步的布局中,并实现日期逻辑 第四步:编写单个日期点击监听器接口 第一步:自定义日历控件(初步) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmln

Flex自定义组件开发之日周月日期选择日历控件

原文:Flex自定义组件开发之日周月日期选择日历控件           使用过DateField的我们都知道,DateField 控件是用于显示日期的文本字段,字段右侧带有日历图标.当用户在控件边框内的任一位置单击时,将弹出一个 DateChooser 控件,显示当月的所有日期.如果未选择日期,则该文本字段为空白,并且 DateChooser 控件中将显示当前日期的月份.当 DateChooser 控件处于打开状态时,用户可以在各个月份和年份之间滚动,并选择某个日期.选择日期后,DateCho

android开发-自定义日历控件实现事务操作

问题描述 自定义日历控件实现事务操作 android开发中,自定义控件的实现步骤,项目中实现日历控件如何标识事务 解决方案 我的博客中有这么一个实例,http://blog.csdn.net/mr_dsw/article/details/48755993就是通过自定义控件进行日历控件的实现,应该能满足你的要求.自定义控件实现的步骤无非就是onMeasure.onLayout.onDraw