窗口电话7中的数字时钟或定时器

时间:2011-11-10 08:39:28

标签: windows-phone-7 windows-phone-7.1

enter image description here我想在WP7应用程序中显示数字计时器。

实际上我正在处理一个事件的申请。

我想要显示的是,它会显示应用程序将在几天,几小时,几分钟和几秒后开始显示,并且时间应该不断减少。

上面给出的图片将让您了解我想要的内容。

我需要做些什么。 任何API或内置控件都可以帮助我解决这个问题,或者我需要对它进行处理。

如果没有任何内置可用,您的建议很乐意接受。

谢谢和问候

3 个答案:

答案 0 :(得分:0)

毕竟显示工作不应该是一个挑战,它只是Xaml,在混合中进行设计应该不会花费你的时间。

至于获取日期和时间,系统范围的“DateTime”类可以像普通的.net一样使用,而'now'和& 'UtcNow'静态属性将为您提供当时的确切时间。

然而,获得.net秒表课程会有点棘手。

它们不再位于系统命名空间中,因此已被移动到特定于手机的命名空间。

在您的项目中,添加对Microsoft.Phone.dll的引用,然后您应该可以在您的代码中使用System.Diagnostics.Stopwatch类,其工作方式与桌面世界中的对应方式相同

答案 1 :(得分:0)

时钟应该很简单,它只是一些文字。最大的问题是将正确的字体放入项目中,因为WP7没有内置的数字字体。您可以将外部字体导入到项目中: How to Integrate non supported fonts in WP7

正如其他海报上所说,只需要更新显示器,就会有一个计时器每秒发一次事件(或者可能是睡眠循环中的后台工作线程,因为你应该能够获得更多的控制权)< / p>

答案 2 :(得分:0)

我使用过此代码

<强> XAML     

            <TextBlock x:Name="txtClockDays" Text="66:" Grid.Row="1" Grid.Column="0" TextAlignment="Center" FontFamily="fonts/digital-7.ttf#Digital-7" FontSize="32"></TextBlock>
            <TextBlock x:Name="txtClockHours" Text="06:" Grid.Row="1" Grid.Column="1" TextAlignment="Center" FontFamily="fonts/digital-7.ttf#Digital-7" FontSize="32"></TextBlock>
            <TextBlock x:Name="txtClockMinutes" Text="30:" Grid.Row="1" Grid.Column="2" TextAlignment="Center" FontFamily="fonts/digital-7.ttf#Digital-7" FontSize="32"></TextBlock>
            <TextBlock x:Name="txtClockSeconds" Text="15" Grid.Row="1" Grid.Column="3" TextAlignment="Center" FontFamily="fonts/digital-7.ttf#Digital-7" FontSize="32"></TextBlock>

            <TextBlock x:Name="txtDays" Text="Days" Grid.Row="2" Grid.Column="0"></TextBlock>
            <TextBlock x:Name="txtHours" Text="Hourss" Grid.Row="2" Grid.Column="1"></TextBlock>
            <TextBlock x:Name="txtMinutes" Text="Minutes" Grid.Row="2" Grid.Column="2"></TextBlock>
            <TextBlock x:Name="txtSeconds" Text="Secondss" Grid.Row="2" Grid.Column="3"></TextBlock>

<强>代码

int diffDays, diffHours, diffMinutes, diffSeconds;
        System.Windows.Threading.DispatcherTimer dt = new System.Windows.Threading.DispatcherTimer();
        public HomeScreen()
        {
            //string mDate, mHours, mMinutes, mSeconds;
            InitializeComponent();
            dt.Interval = new TimeSpan(0, 0, 0, 1);
            dt.Tick += new EventHandler(dt_Tick);

            DateTime d1= DateTime.Now;
            DateTime d2 = new DateTime(2012, 1, 15, 10, 45, 00);
            TimeSpan span = d2.Subtract(d1);
            diffSeconds = span.Seconds;
            diffMinutes = span.Minutes;
            diffHours = span.Hours;
            diffDays = span.Days;

            txtClockDays.Text = diffDays.ToString();
            txtClockHours.Text = diffHours.ToString();
            txtClockMinutes.Text = diffMinutes.ToString();
            txtClockSeconds.Text = diffSeconds.ToString();

            dt.Start();
        }

        void dt_Tick(object sender, EventArgs e)
        {
            if (diffSeconds <= 0)
            {
                diffSeconds = 59;
                if (diffMinutes <= 0)
                {
                    diffMinutes = 59;
                    if (diffHours <= 0)
                    {
                        diffHours = 59;
                        if (diffDays <= 0)
                        {
                            diffDays = 0;
                            diffHours = 0;
                            diffMinutes = 0;
                            diffSeconds = 0;
                            dt.Stop();
                        }
                        else
                        {
                            diffDays = diffDays - 1;
                        }
                    }
                    else
                    {
                        diffHours = diffHours - 1;
                    }
                }
                else
                {
                    diffMinutes = diffMinutes - 1;
                }

            }
            else
            {
                diffSeconds = diffSeconds - 1;
            }


            //Dispalying the timer
            if (diffSeconds < 10)
            {
                txtClockSeconds.Text = "0" + diffSeconds.ToString();
            }
            else
            {
                txtClockSeconds.Text = diffSeconds.ToString();
            }


            if (diffMinutes < 10)
            {
                txtClockMinutes.Text = "0" + diffMinutes.ToString();
            }
            else
            {
                txtClockMinutes.Text = diffMinutes.ToString();
            }

            if (diffHours < 10)
            {
                txtClockHours.Text = "0" + diffHours.ToString();
            }
            else
            {
                txtClockHours.Text = diffHours.ToString();
            }

            if (diffDays < 10)
            {
                txtClockDays.Text = "0" + diffDays.ToString();
            }
            else
            {
                txtClockDays.Text = diffDays.ToString();
            }
        }

        private void btnRacenevents_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new Uri("/TestPivot.xaml", UriKind.RelativeOrAbsolute));
        }

我在此代码中使用的字体使用此链接: http://www.jeffblankenburg.com/2010/10/24/31-days-of-windows-phone-day-24-embedding-fonts/