이 질문에 답할 가치가없는 경우 사과하겠습니다.하지만 내가하고있는 일이 왜 작동하지 않는 지에 대해서는 당황 스럽습니다.DispatcherTimer가 MVB로 TextBlock을 업데이트 함
WP8 앱을 만들고 있는데 화면에 현재 날짜와 시간 (1 분마다 새로 고침)을 표시하고 싶습니다. 나는 그 일을 잘 처리 할 수 있었지만 시간은 나에게 나타나지 않을 것이고 수많은 자습서를 따라 갔다. 아마도 뭔가 어리석은 짓 일지 모르지만 그걸 알아낼 수는 없어요. 나도 꽤 새로운 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));
}
}
그리고 내 XAML 코드에 있습니다. 내 뷰 모델 폴더로 지역 설정, 또한 올바른 클래스로 설정 UserControl.DataContext 있습니다
<TextBlock FontSize="25" Foreground="Red" HorizontalAlignment="Center" VerticalAlignment="Top" Text="{Binding CurrentTime}"/>
는 또한 XAML 코드에서, 나는 나의 XMLNS 있습니다. 내가 언급했듯이, 날짜는 잘 나타납니다. 디자이너보기에는 무작위로 시간이 표시되었지만 코드를 실행하면 사라졌습니다.
감사합니다.
만들기'DispatcherTimer dispatcherTimer'. –