如何检查属性是否已更改wpf c#

时间:2016-10-04 06:33:46

标签: c# wpf mvvm

我在viewmodel中有一个属性问题。这属于一个模型,其中有许多属性,如集合,字符串,图像。我使用此视图模型打开一个窗口。我试图向用户显示一些消息,如果属性问题(其子属性)值已更改。我创建了一个标记 _isChanged 来跟踪更改,但它仍然是错误的。

 public Problem Problem
    {
        get { return _problem; }
        set
        {
            if (value != _problem)
            {
                _problem = value;
                _isChanged=true;
                OnPropertyChanged("Problem");

            }
        }
    }

2 个答案:

答案 0 :(得分:0)

在我能想到的情况列表下面:

  • 属性Problem永远不会设置
  • 新值等于旧值
  • Problem有自定义operator =
  • _isChanged设置为false其他地方
  • 在一个对象实例上设置值并检查其他对象实例的_isChanged

这些都是您共享的代码之外的所有内容,换句话说,Problem很可能不是问题。

答案 1 :(得分:0)

仅仅因为类问题内的属性发生了变化,并不意味着属性问题本身会发生变化。 在这些属性中你必须做这样的事情(假设Text是你问题类中的一个属性):

public string Text {

    get { return _text; }
    set
    {
        if (value != _text)
        {
            _text = value;
            Parent.IsChanged = true;
            OnPropertyChanged("Text");
        }
    }
}

其中Parent是对您的Problem对象的引用。