C# Windows Phone倒计时应用程序

C# Windows Phone倒计时应用程序,c#,datetime,windows-phone-8,windows-phone,C#,Datetime,Windows Phone 8,Windows Phone,我试图做两件事: 在圣诞节,只要页面被导航到,就调用一个方法 圣诞节后,将圣诞节日期时间设置为+1年(以便倒计时“重置”) 这是我的密码: private void OnTick(object sender, EventArgs e) { DateTime christmasDay; DateTime.TryParse("11/17/13", out christmasDay); var timeLeft

我试图做两件事:

在圣诞节,只要页面被导航到,就调用一个方法

圣诞节后,将圣诞节日期时间设置为+1年(以便倒计时“重置”)

这是我的密码:

 private void OnTick(object sender, EventArgs e)
        {
            DateTime christmasDay;
            DateTime.TryParse("11/17/13", out christmasDay);
            var timeLeft = christmasDay - DateTime.Now;


            int x = DateTime.Now.Year - christmasDay.Year;
            if (DateTime.Now > christmasDay)
            {
                if (x == 0)
                    x += 1;
                christmasDay.AddYears(x);
                if (DateTime.Now.Month == christmasDay.Month && DateTime.Now.Day == christmasDay.Day)
                {
                    itsChristmas();
                }
            }

             countdownText.Text = String.Format("{0:D2} : {1:D2} : {2:D2} : {3:D2}", timeLeft.Days, timeLeft.Hours, timeLeft.Minutes, timeLeft.Seconds);
        }
当我将日期设置为今天时,“itsChristmas()”方法可以工作……但我并不希望在倒计时的每一个滴答声中都调用它。我试着把它放在页面的构造器中,但是没有用。有什么想法吗


第二个问题是,如果我将日期设置为今天的前一天,它会给出负数。我不知道发生这种情况时我的代码出了什么问题:(

您的解决方案相当复杂。您可以这样解决它

private void OnTick(object sender, EventArgs e)
{
    var now = DateTime.Now;
    var christmasDay = NextChristmas();

    if (now.Date < christmasDay.Date)
    {
        // it's not christmas yet, nothing happens
    }

    if (now.Date == christmasDay.Date)
    {
        // it's christmas, do your thing
        itsChristmas();
    }
}

private DateTime NextChristmas()
{
    var thisYearsChristmas = new DateTime(DateTime.Now.Year, 12, 25);

    if (DateTime.Now.Date <= thisYearsChristmas.Date) return thisYearsChristmas;
    return thisYearsChristmas.AddYears(1);
}
private void OnTick(对象发送方,事件参数e)
{
var now=DateTime.now;
var christmasDay=NextChristmas();
如果(now.Dateif(DateTime.Now.Date)我切换到上面的代码,认为我可以在不使用独立存储的情况下使其工作,因为我不知道如何将日期时间保存到独立存储中。:((我对此非常陌生。)