wpf 如何将应用程序代码集成到MVVM中

zyfwsgd6  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(400)

我做了一个程序,做了一些计算,我想创建一个图形用户界面使用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
}
o0lyfsai

o0lyfsai1#

如果我没有理解错的话,appModel.number++;正在修改私有支持变量,这不会更新Number的setter,因此不会调用PropertyChanged事件。我认为总是修改公共成员是一种好的做法。
看起来你可以做一些变量的合并(n总是和Number一样吗?为什么不直接修改Number?)来清理东西。

相关问题