2016-10-04 64 views
0

我有一个属性viewmodel Problem.This属于一个模型,其中有许多属性,如集合,字符串,图像。我打开一个窗口使用这个视图model.I我试图向用户显示一些消息,如果属性问题(其子属性)值已经改变。我做了一个标志_isChanged跟踪更改,但它仍然是错误的。如何检查一个属性已经改变或没有wpf c#

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

      } 
     } 
    } 
+0

它在别处被设置为false吗?你调试了吗? –

+0

是的,在默认情况下它是false.On在问题发生变化时变为真 –

+0

你必须更详细地描述你的问题,没有足够的信息来帮助你。 –

回答

0

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

  • 酒店Problem是从来没有设置
  • 的新值等于旧值
  • Problem具有自定义operator =
  • _isChanged设置为false其他地方
  • 设置值上一个对象实例,并检查_isChanged不同的对象实例的

这些都是外界所发生您共享代码的所有的东西,或者换句话说,Problem是最有可能不问题。

0

只是因为类内部的属性问题发生了变化,并不意味着属性问题本身会发生变化。 这些属性,你必须做这样的事情里面(比方说文字是你的问题类中的属性):

public string Text { 

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

父母在哪里是你的问题对象的引用。

相关问题