Windows phone 7 Windows Phone 7中的数字时钟或计时器

Windows phone 7 Windows Phone 7中的数字时钟或计时器,windows-phone-7,windows-phone-7.1,Windows Phone 7,Windows Phone 7.1,我想在我的WP7应用程序中显示一个数字计时器 实际上,我正在为一个活动编写一个应用程序 我想显示的是,它显示应用程序将在接下来的几天、几小时、几分钟和几秒钟内开始,并且时间将不断减少 上面的图片会让你知道我到底想要什么 我需要为它做些什么。 任何API或内置控件都可以帮助我,或者我需要处理它 如果没有现成的建议,我们将欣然接受你的建议 感谢并问候显示工作毕竟不应该是一个挑战,它只是Xaml,在blend中设计它应该不会占用您任何时间 至于获取日期和时间,系统范围的DateTime类与常规.net

我想在我的WP7应用程序中显示一个数字计时器

实际上,我正在为一个活动编写一个应用程序

我想显示的是,它显示应用程序将在接下来的几天、几小时、几分钟和几秒钟内开始,并且时间将不断减少

上面的图片会让你知道我到底想要什么

我需要为它做些什么。 任何API或内置控件都可以帮助我,或者我需要处理它

如果没有现成的建议,我们将欣然接受你的建议


感谢并问候

显示工作毕竟不应该是一个挑战,它只是Xaml,在blend中设计它应该不会占用您任何时间

至于获取日期和时间,系统范围的DateTime类与常规.net中的类一样可用,“now”和“UtcNow”静态属性将为您提供此时的确切时间

然而,学习.net秒表课程有点棘手

它们不再位于系统名称空间中,因此已被移动到特定于电话的名称空间


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

时钟应该很简单,只是一些文本。最大的问题是在项目中使用正确的字体,因为WP7没有内置数字字体。您可以将外部字体导入到项目中:

正如其他海报所说,更新显示所需的只是一个定时器每秒触发一次事件,或者可能是在睡眠循环中的后台工作线程,因为您应该能够获得更多的控制

我使用了此代码

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));
        }