C# 如何将DateTime.Now绑定到TextBlock?
在我的Windows 8应用程序中,我想在TextBlock元素中显示当前时间。时间值应每秒更新一次。下面的代码工作得很好,但我认为这并不是理想的解决方案。那么,有没有更好的方法C# 如何将DateTime.Now绑定到TextBlock?,c#,windows-8,windows-runtime,C#,Windows 8,Windows Runtime,在我的Windows 8应用程序中,我想在TextBlock元素中显示当前时间。时间值应每秒更新一次。下面的代码工作得很好,但我认为这并不是理想的解决方案。那么,有没有更好的方法 public class Clock : Common.BindableBase { private string _time; public string Time { get { return _time; } set { SetProperty<string&
public class Clock : Common.BindableBase {
private string _time;
public string Time {
get { return _time; }
set { SetProperty<string>(ref _time, value); }
}
}
private void startPeriodicTimer() {
if (PeriodicTimer == null) {
TimeSpan period = TimeSpan.FromSeconds(1);
PeriodicTimer = ThreadPoolTimer.CreatePeriodicTimer((source) => {
Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() => {
DateTime time = DateTime.Now;
clock.Time = string.Format("{0:HH:mm:ss tt}", time);
[...]
});
}, period);
}
}
你可以用定时器
var timer = new Timer { Interval = 1000 };
timer.Elapsed += (sender, args) => NotifyPropertyChanged("Now");
timer.Start();
并每秒通知一个属性
public DateTime Now
{
get { return DateTime.Now; }
}
你可以用定时器
var timer = new Timer { Interval = 1000 };
timer.Elapsed += (sender, args) => NotifyPropertyChanged("Now");
timer.Start();
并每秒通知一个属性
public DateTime Now
{
get { return DateTime.Now; }
}
我是如何在我的应用程序中使用计时器的
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
TxtHour.Text = DateTime.Now.ToString("HH:mm:ss");
}
private void MainWindow_OnLoad(object sender, RoutedEventArgs e)
{
System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
dispatcherTimer.Start();
TxtDate.Text = DateTime.Now.Date.ToShortDateString();
}
我是如何在我的应用程序中使用计时器的
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
TxtHour.Text = DateTime.Now.ToString("HH:mm:ss");
}
private void MainWindow_OnLoad(object sender, RoutedEventArgs e)
{
System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
dispatcherTimer.Start();
TxtDate.Text = DateTime.Now.Date.ToShortDateString();
}
WinRT具有
Dispatchermer
类。你可以用它
XAML
WinRT具有
Dispatchermer
类。你可以用它
XAML
你应该更频繁地投票。如果你每秒钟做一次,你可能会发现时钟似乎在断断续续或跳跃。由于时钟精度和cpu定时问题,“每秒一次”不能保证以精确的1秒间隔运行。两个方向的距离可能都有几毫秒。因此,设置一个500毫秒的值,它会更平滑。你应该更频繁地投票。如果你每秒钟做一次,你可能会发现时钟似乎在断断续续或跳跃。由于时钟精度和cpu定时问题,“每秒一次”不能保证以精确的1秒间隔运行。两个方向的距离可能都有几毫秒。因此,设置一个500毫秒的值,它将更加平滑。