gpt4 book ai didi

c# - 使用 MVVM 在 WPF 中连续显示当前时间显示

转载 作者:行者123 更新时间:2023-12-03 10:30:03 25 4
gpt4 key购买 nike

我想在屏幕上显示当前时间,并使用 MVVM 模式在 WPF 屏幕中不断更新。

我正在我的 View 模型中编写此代码

// creating a property
private string _currentDateTime;
public string CurrentDateTime
{
get
{
return _currentDateTime;
}
set
{
if (value != _currentDateTime)
{
_currentDateTime = value;
this.RaisePropertyChanged(() => this.CurrentDateTime);
}
}
}

我写了这个方法
 public string GetCurrentDateTime()
{
try
{
DispatcherTimer timer = new DispatcherTimer(new TimeSpan(0, 0, 1),
DispatcherPriority.Normal,
delegate
{
this.CurrentDateTime = DateTime.Now.ToString("HH:mm:ss");
},
this.Dispatcher);

return CurrentDateTime;
}
catch
{
return CurrentDateTime;
}
}

我将我的文本 block 与属性绑定(bind),但它显示异常为 this.CurrentDateTimenull .

任何建议为什么?

最佳答案

我不确定您对 RaisePropertyChanged(() => this.CurrentDateTime) 的意图是什么.

如果要处理 MVVM 属性更改通知,则此代码应在您的 VM 中

public event PropertyChangedEventHandler PropertyChanged;

protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}

那么你的设置应该是
set
{
if (value != _currentDateTime)
{
_currentDateTime = value;
OnPropertyChanged("CurrentDateTime");
}
}

要不断更新您的时间,请使用 Timer

然后,您可以将间隔设置为 1 秒,并在每个计时器经过的事件上设置您的 CurrentDateTime
CurrentDateTime = DateTime.Now.ToString();

关于c# - 使用 MVVM 在 WPF 中连续显示当前时间显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8395659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com