我想在WP7应用程序中显示数字计时器。
实际上我正在处理一个事件的申请。
我想要显示的是,它会显示应用程序将在几天,几小时,几分钟和几秒后开始显示,并且时间应该不断减少。
上面给出的图片将让您了解我想要的内容。
我需要做些什么。 任何API或内置控件都可以帮助我解决这个问题,或者我需要对它进行处理。
如果没有任何内置可用,您的建议很乐意接受。
谢谢和问候
答案 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/