我做了一个程序,做了一些计算,我想创建一个图形用户界面使用WPF和MVVM。我不确定如何将应用程序的内部变量连接到视图将响应的模型属性。我的意思是,如果我的应用程序正在使用内部变量n
,每当它改变值时,为了在视图中反映变化,我必须手动更新模型的适当性。
将我的应用程序集成到MVVM中的更好方法是什么?
下面是我的代码(简化版):
class ApplicationModel : INotifyPropertyChanged
{
#region Members
private int number;
#endregion
public ApplicationModel()
{
new Thread(() => applicationWork(this)).Start();
}
private void applicationWork(ApplicationModel appModel)
{
// internal variables
int n = 0
// simulating my app running, changing variables
while (true)
{
Thread.Sleep(1000);
n++;
appModel.number++;
// how do I tie the two together?
}
}
#region Properties
public int Number
{
get
{
return number;
}
set
{
number = value;
OnPropertyChanged("Number");
}
}
#endregion
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler? PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
// ...
}
#endregion
}
1条答案
按热度按时间o0lyfsai1#
如果我没有理解错的话,
appModel.number++;
正在修改私有支持变量,这不会更新Number
的setter,因此不会调用PropertyChanged事件。我认为总是修改公共成员是一种好的做法。看起来你可以做一些变量的合并(
n
总是和Number
一样吗?为什么不直接修改Number
?)来清理东西。