7

我有这样的场景

Class Parent 
{
    Property  A;
 }

 Class A 
 {
      Property X
 }

当 X 改变时,我怎样才能PropertyChangedNotification在属性 A 上获得一个?我不想在 A 类或任何破坏我脱钩的事件中提及“父母”。我基本上想要的是制作Parent.IsDirty==true. 这是我故事的一个非常简化的版本,我有几十个像 Parent 这样的类,所以我正在寻找一些通用的方法来处理这个问题。

请注意,这不是实际代码。我得到了所有INotifyPropertyChanged的实施。我只是想知道任何简单的机制,比如RaisePropertyChanged("A.X")

4

2 回答 2

8

您可以尝试在父类中注册 propertychanged 事件。在构造函数中,您可以订阅事件:

public Parent()
{
    A.OnPropertyChanged += OnAPropertyChanged;
}

void OnAPropertyChanged(object sender, PropertyChangedEventArgs e)
{
    if (e.PropertyName == "X")
        if(PropertyChanged != null)
             PropertyChanged(this, new PropertyChangedEventArgs("A"))
}

希望这可以帮助...

于 2010-03-11T22:26:13.523 回答
0

我不知道这是否是最佳做法,但是:这样的事情怎么样:

private Movie movie;
public Movie Movie
{
    get { return movie; }
    set
    {
        var oldProperties = typeof(Movie).GetProperties();
        foreach (var property in oldProperties)
        {
            if (property.GetValue(movie).GetHashCode() != value.GetType().GetProperty(property.Name).GetValue(value).GetHashCode())
            {
                RaisePropertyChanged(property.Name);
            }
        }

        movie = value;

    }
}

当然,您可以将其带到外部帮助器,该帮助器获取 2 个对象和事件处理程序

于 2013-05-13T14:45:38.313 回答