2 c# xaml mvvm dispatchertimer windows-phone-8
道歉,如果这不值得问一个问题,但我很困惑为什么我正在做的事情不起作用.
我正在制作一个WP8应用程序,我想在屏幕上显示当前日期和时间(将刷新每分钟).我已经设法让日期工作正常,但时间不会出现在我身上,我已经按照了很多教程.这可能是非常愚蠢的事情,但我无法弄清楚.我也在使用对我来说很新的MVVM模式,所以它可能与它有关吗?
这是我的ViewModel类;
public class SleepTrackerViewModel : INotifyPropertyChanged
{
private string _currentTime, _currentDate;
public event PropertyChangedEventHandler PropertyChanged;
public SleepTrackerViewModel()
{
CurrentDateText();
DispatcherTimerSetup();
}
private void DispatcherTimerSetup()
{
DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Interval = TimeSpan.FromMinutes(1);
dispatcherTimer.Tick += new EventHandler(CurrentTimeText);
dispatcherTimer.Start();
}
private void CurrentDateText()
{
CurrentDate = DateTime.Now.ToString("dddd dd MMMM yyyy");
}
private void CurrentTimeText(object sender, EventArgs e)
{
CurrentTime = DateTime.Now.ToString("HH:mm");
}
public string CurrentTime
{
get { return _currentTime; }
set
{
if (_currentTime != null)
_currentTime = value;
OnPropertyChanged("CurrentTime");
}
}
public string CurrentDate
{
get { return _currentDate; }
set
{
if (_currentDate != value)
_currentDate = value;
OnPropertyChanged("CurrentDate");
}
}
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
Run Code Online (Sandbox Code Playgroud)
在我的XAML代码中,我有;
<TextBlock FontSize="25" Foreground="Red" HorizontalAlignment="Center" VerticalAlignment="Top" Text="{Binding CurrentTime}"/>
Run Code Online (Sandbox Code Playgroud)
同样在XAML代码中,我将我的xmlns:local设置为我的ViewModel文件夹,并将UserControl.DataContext设置为正确的类.正如我所提到的,日期显示正常.时间确实在设计器视图中随机出现,但是当我运行代码时它就消失了.
谢谢.
小智 6
我查看了你的代码,并想知道CurrentTime的setter.
下列:
if (_currentTime != null)
_currentTime = value;
Run Code Online (Sandbox Code Playgroud)
应该是:
if (_currentTime != value)
_currentTime = value;
Run Code Online (Sandbox Code Playgroud)