WP8日历(含农历)APP

WP8日历(含农历)APP

WP8日历(含农历)APP UI XAML(部分)

<phone:PhoneApplicationPage xmlns:CustomControl="clr-namespace:CalendarApp.CustomControl"
    xmlns:Controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
    x:Class="CalendarApp.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True"
    Loaded="PhoneApplicationPage_Loaded">

    <Grid x:Name="LayoutRoot" Background="Transparent">
        <StackPanel x:Name="SPCalendar" Margin="0" Orientation="Vertical">
            <TextBlock Name="txtHead" Text="" Style="{StaticResource titleCss}" />

            <!-- 日历头部 -->
            <StackPanel Orientation="Vertical">
                <!-- 日历button -->
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                    <Image Source="/Images/left.png" ManipulationStarted="Image_ManipulationStarted" />
                    <StackPanel Orientation="Horizontal" ManipulationStarted="StackPanel_ManipulationStarted">
                        <TextBlock Name="txtYear" Text="2014" Style="{StaticResource CHeadCss}" Width="110" />
                        <TextBlock Text="年" Style="{StaticResource CHeadCss}" />

                        <TextBlock Name="txtMonth" Text="04" Style="{StaticResource CHeadCss}" Width="55" />
                        <TextBlock Text="月" Style="{StaticResource CHeadCss}" />
                    </StackPanel>
                    <Image Source="/Images/right.png" ManipulationStarted="Image_ManipulationStarted" />
                </StackPanel>

                <!-- 日历标题 -->
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="日" Style="{StaticResource CTitlerGreen}" />
                    <TextBlock Text="一" Style="{StaticResource CTitleCss}" />
                    <TextBlock Text="二" Style="{StaticResource CTitleCss}" />
                    <TextBlock Text="三" Style="{StaticResource CTitleCss}" />
                    <TextBlock Text="四" Style="{StaticResource CTitleCss}" />
                    <TextBlock Text="五" Style="{StaticResource CTitleCss}" />
                    <TextBlock Text="六" Style="{StaticResource CTitlerGreen}" />
                </StackPanel>
            </StackPanel>

            <!-- 日历内容 -->
            <Grid Name="gCalendar"  Background="Gray" Width="480" Height="615">
                <Grid.RowDefinitions>
                    <RowDefinition Height="*" />
                    <RowDefinition Height="*" />
                    <RowDefinition Height="*" />
                    <RowDefinition Height="*" />
                    <RowDefinition Height="*" />
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>

                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
            </Grid>
        </StackPanel>
    </Grid>
</phone:PhoneApplicationPage>

后台CS參考代码(部分):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using CalendarApp.Resources;
using System.Collections.ObjectModel;
using Model;
using ChineseCalendar;
using CalendarApp.PageCode;
using CalendarApp.CustomControl;
using Microsoft.Phone.Controls.Primitives;

namespace CalendarApp
{
    public partial class MainPage : PhoneApplicationPage
    {
        #region 全局变量
        /// <summary>
        /// BGDateWeek 当月第一天星期数
        /// </summary>
        int BGDateWeek = new int();

        /// <summary>
        /// ObservableCollection<CalendarModel> myCalendar
        /// </summary>
        ObservableCollection<CalendarModel> myCalendar = new ObservableCollection<CalendarModel> { };
        #endregion

        public MainPage()
        {
            InitializeComponent();
        }

        private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
        {
            //当前日期数据
            DateTime dt = DateTime.Now;
            if (this.NavigationContext.QueryString.Count > 0 && this.NavigationContext.QueryString["t"] != null)
                if (!DateTime.TryParse(this.NavigationContext.QueryString["t"].ToString(), out dt)) dt = DateTime.Now;

            this.txtYear.Text = dt.ToString("yyyy");
            this.txtMonth.Text = dt.ToString("MM");

            //载入当月日期数据
            GetMonthDate(dt.ToString("yyyy-MM-dd"));
        }

        #region 依据指定时间获取日历数据
        /// <summary>
        /// 依据指定时间获取日历数据
        /// </summary>
        /// <param name="dtMonth">时间 yyyy-MM</param>
        public void GetMonthDate(String dtMonth)
        {
            //初始化參数
            DateTime dt = DateTime.Now;
            if (!DateTime.TryParse(dtMonth, out dt)) dt = DateTime.Now;

            //获取选中日期的第一天、最后一天。以及第一天星期几
            DateTime BGDate, EDDate, GLDate;
            BGDate = new DateTime(dt.Year, dt.Month, 1);
            EDDate = BGDate.AddMonths(1).AddDays(-1);
            getWeekIndex(BGDate.DayOfWeek.ToString());

            //自己定义控件
            CustomControl.CustomDate cd = null;
            CustomControl.CustomDateGreen cdGreen = null;

            //初始化变量
            CalendarModel item = null;

            //清空
            this.gCalendar.Children.Clear();

            //循环加入数据
            int row = 0, col = 0;
            for (int i = 0, len = (EDDate - BGDate).Days; i <= len; i++)
            {
                //设定行和列
                if (i == 0)
                    col = BGDateWeek;
                else col++;

                if (col > 6)
                {
                    col = 0;
                    row++;
                }

                GLDate = BGDate.AddDays(i);
                item = new CalendarModel()
                {
                    GLDay = GLDate.ToString("dd"),
                    GLDate = GLDate.ToString("yyyy-MM-dd"),

                    NLDay = ChineseCalendarDate.GetChineseDate(GLDate),
                    NLDate = ChineseCalendarDate.GetChineseDateTime(GLDate)
                };

                //年信息
                String year = item.NLDate.Substring(0, item.NLDate.IndexOf("年") + 1);
                this.txtHead.Text = "农历" + year;

                //绑定数据
                if (col == 0 || col == 6)
                {
                    cdGreen = new CustomDateGreen();
                    cdGreen.DataContext = item;
                    Grid.SetColumn(cdGreen, col);
                    Grid.SetRow(cdGreen, row);
                    this.gCalendar.Children.Add(cdGreen);
                }
                else
                {
                    cd = new CustomDate();
                    cd.DataContext = item;
                    Grid.SetColumn(cd, col);
                    Grid.SetRow(cd, row);
                    this.gCalendar.Children.Add(cd);
                }
            }
        }
        #endregion

        #region 获取星期索引
        /// <summary>
        /// 获取星期索引
        /// </summary>
        /// <param name="week"></param>
        private void getWeekIndex(String week)
        {
            switch (week)
            {
                case "Monday":   //周一
                    BGDateWeek = 1;
                    break;
                case "Tuesday":  //周二
                    BGDateWeek = 2;
                    break;
                case "Wednesday"://周三
                    BGDateWeek = 3;
                    break;
                case "Thursday"://周四
                    BGDateWeek = 4;
                    break;
                case "Friday":  //周五
                    BGDateWeek = 5;
                    break;
                case "Saturday"://周六
                    BGDateWeek = 6;
                    break;
                case "Sunday":  //周末
                    BGDateWeek = 0;
                    break;
            }
        }
        #endregion

        #region 时间选择
        /// <summary>
        /// 时间选择
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Image_ManipulationStarted(object sender, System.Windows.Input.ManipulationStartedEventArgs e)
        {
            Image image = (Image)sender;
            if (image != null)
            {
                int y = int.Parse(this.txtYear.Text);
                int m = int.Parse(this.txtMonth.Text);

                if (((System.Windows.Media.Imaging.BitmapImage)(image.Source)).UriSource.ToString().Contains("left.png"))
                {
                    //时间递减
                    if (m - 1 <= 0)
                    {
                        //前一年
                        this.txtMonth.Text = "12";
                        this.txtYear.Text = (y - 1).ToString().Trim();
                    }
                    else
                    {
                        //当年,月递减
                        m--;
                        if (m == 0) m = 1;
                        this.txtMonth.Text = m >= 10 ? m.ToString() : "0" + m.ToString();
                    }
                }
                else
                {
                    //时间递增
                    if (m + 1 > 12)
                    {
                        //后一年
                        this.txtMonth.Text = "01";
                        this.txtYear.Text = (y + 1).ToString().Trim();
                    }
                    else
                    {
                        //当年,月递增
                        m++;
                        this.txtMonth.Text = m >= 10 ? m.ToString() : "0" + m.ToString();
                    }
                }

                //获取新时间
                GetNewDate();
            }
        }
        #endregion

        #region 相应时间选择
        /// <summary>
        /// 相应时间选择
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void StackPanel_ManipulationStarted(object sender, System.Windows.Input.ManipulationStartedEventArgs e)
        {
            String time = this.txtYear.Text + "-" + this.txtMonth.Text;
            this.NavigationService.Navigate(new Uri("/CustomControl/CustomDatePicker.xaml?

t=" + time, UriKind.Relative));
        }
        #endregion

        #region 获取新时间
        /// <summary>
        /// 获取新时间
        /// </summary>
        public void GetNewDate()
        {
            //当前日期数据
            DateTime dt = DateTime.Parse(this.txtYear.Text.Trim() + "-" + this.txtMonth.Text.Trim());

            this.txtYear.Text = dt.ToString("yyyy");
            this.txtMonth.Text = dt.ToString("MM");

            //载入当月日期数据
            GetMonthDate(dt.ToString("yyyy-MM-dd"));
        }
        #endregion
    }
}
备注:因为在本实例中无法 使用 ChineseLunisolarCalendar 类 无法获取 中国农历的准确数据
      案例中的农历数据 有误。如有能人帮助解决。
      将不胜感激!
      自己定义 类 依据公历获取 农历日期数据: http://blog.csdn.net/yimiyuangguang/article/details/24301933

实例下载:

http://pan.baidu.com/s/1gd5UU5d

效果图:

时间: 2024-10-12 11:38:56

WP8日历(含农历)APP的相关文章

wp8.1 Study10:APP数据存储

一.理论 1.App的各种数据在WP哪里的? 下图很好介绍了这个问题.有InstalltionFolder, knownFolder, SD Card... 2.一个App的数据存储概览 主要分两大部分,InstallationFolder和App Data Folder 3.Windows.Storage.ApplicationData  和  Windows.Security.Credentials简述 其中利用Windows.Storage.ApplicationData,我们可以获得3种

wp8.1 Study6: App的生命周期管理

一.概述 应用程序的生命周期详解可以参照Windows8.1开发中msdn文档http://msdn.microsoft.com/library/windows/apps/hh464925.aspx 应用程序生命周期中有三个状态:Running(运行中),Suspended(挂起,暂停),NotRunning(终止).如图所示 那么Suspended与NotRuning有什么不同呢?Suspended意味着当用户切换到另一个程序,你的应用程序很可能将被暂停一段时间,直到用户切换回您的应用程序.在

wp8.1 Study11:APP里文件读写和使用XML和Json序列化

一.文件读写 1.基本操作(使用FileIO API) 这个方法在上一个stduy已经学过,那么贴出来复习下,代码如下: private async void writeTextToLocalStorageFile(string filename, string text) { var fold = Windows.Storage.ApplicationData.Current.LocalFolder;//打开文件夹 StorageFile file = await fold.CreateFil

谷歌日历的正确用法--在谷歌日历中添加农历、天气、中国节假日

1. 在PC端设置农历.天气.中国节假日 (1)添加农历: 在电脑通过浏览器打开google calender页面  https://calendar.google.com 并登录google帐号 设置--添加日历--通过网址添加, 输入农历日历网址http://www.google.com/calendar/ical/[email protected]/public/basic.ics 并确认 或者在日历主页点击“添加朋友的日历”后面的+号, 通过网址添加,输入农历日历网址http://www

博主全程打造的第一个亲生儿子---朴素农历(free)

先上几张王道: App Store 下载地址 越狱版下载地址 虽然博主从2013年开始开发iOS,但是那时候仅仅是为别人打工,写APP. 第一个儿子是ShortenMe+,可能没什么人知道这个软件吧,它是博主独自打造的一款图片处理小App 但是因为那时候Too young,too simple!基础知识太薄弱,图片处理的效果并不理想.而且TA是在美国区上线的···so,下载量并不是很多 更因为发布者是我那时候的老板!!!所以,对别人而言,我是把儿子过继给他了!!! 博主第二个儿子是一款Googl

我的第一个WP8.1应用总结

我的LUMIA925已经买了很久了,想自己开发WP应用放在上面,却一直想不到有什么特别的想法和需要.前几天的事情正好让我有了这个机会. 前几天在客户机房工作的时候,同事打电话来说另一个客户由于换了电脑,需要发新的激活码过去激活我们的软件.我不得不打开本本,把同事发到手机QQ的机器码输入到本本上的注册机程序里,再把生成的激活码输入到手机发过去.对于在外面本本不能上网的情况这真是一件繁琐的事.晚上在家没事的时候就想着把这个注册机移植到我的LUMIA925上.安装VS补丁和激活手机开发的步骤就不赘述了

WP8.1:关于屏幕尺寸和分辨率的那些事儿

目前市面上的Windows Phone设备越来越多,尺寸和分辨率也越来越多,特别是WP8.1时代的到来.做过wp开发的人都知道应用适配其实较安卓要简单太多了,其中有一个重要原因,就是微软号称所有WP设备都将以2个基准分辨率来发展,即800 : 480和853 : 480.WP8+的应用适配相对来说比较简单,主要让屏幕布局适配这两种比例足矣,想必对WVGA.WXGA和720p三种分辨率及对应的模拟器都有一定了解. 撸主最近深陷Universal Apps的大坑,虽说API变化很大,却提供了更多有价

索尼 LT26I刷机包 X.I.D 增加官方风格 GF A3.9.4 各方面完美

ROM介 FX_GF_A系列是具有官方风格的.稳定的.流畅的.省电的.新功能体验的.最悦耳音效体验的ROM. FX_GF_A更新日志 ☆ GF_3.9.4 更新信息 ☆ 更新播放器 ☆ 更新adsp数据 ☆ 更新部分Z2音频数据 ☆ 改动脚本 ☆ 修正可换锁屏壁纸 ☆ GF_3.9.3 更新信息 ☆ 更新播放器桌面插件2.0.A.0.54 ☆ 调整录音文字显示 ☆ 增加新版日历带农历12.0.A.0.23 ☆ 更新播放器8.3.A.0.7 ☆ 更新相冊6.1.A.1.14 ☆ 调整均衡器 ☆ 改

Android ROM 制作教程

本文来自: 起点手机论坛 具体文章參考:http://www.qdppc.com/forum.php?mod=viewthread&tid=43751&fromuid=1 1.Android系统是什么? Android是Google公司于2007年公布的基于Linux的移动终端系统平台. 之所以说是移动终端,是由于现现在手机.MID.Tablet等之间的差距越来越小,而不再存在不可逾越的鸿沟. 凭借Google服务的优势.各移动设备制造商的配合以及Android系统本身对于开发人员良好的亲