我在viewmodel中有一个属性问题。这属于一个模型,其中有许多属性,如集合,字符串,图像。我使用此视图模型打开一个窗口。我试图向用户显示一些消息,如果属性问题(其子属性)值已更改。我创建了一个标记 _isChanged 来跟踪更改,但它仍然是错误的。
public Problem Problem
{
get { return _problem; }
set
{
if (value != _problem)
{
_problem = value;
_isChanged=true;
OnPropertyChanged("Problem");
}
}
}
答案 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对象的引用。