Thanks Todd, here is the code in the base class BOBase.
[DataContract]
public class BOBase : INotifyPropertyChanged
{
private List<string> _changedFields = new List<string>();
[DataMember]
public List<string> ChangedFields
{
get { return _changedFields; }
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandle
#endregion
public enum BusinessObjectSource
{
AddedNotInDb = 0,
FromDb = 1,
}
public enum BusinessObjectStatus
{
Deleted = 0,
Modified = 1,
Unchanged = 2
}
BusinessObjectStatus _objectStatus;
BusinessObjectSource _objectSource;
public BOBase()
{
_objectSource = BusinessObjectSource.Added
_objectStatus = BusinessObjectStatus.Uncha
}
[DataMember]
public bool IsNew
{
get { return _objectSource == BusinessObjectSource.Added
set { _objectSource = BusinessObjectSource.Added
}
[DataMember]
public bool IsPhantom
{
get
{
return _objectSource == BusinessObjectSource.Added
_objectStatus == BusinessObjectStatus.Delet
}
set { }
}
[DataMember]
public bool IsModified
{
get
{
return
_objectSource == BusinessObjectSource.FromD
_objectStatus == BusinessObjectStatus.Modif
}
set{}
}
[DataMember]
public bool IsDeleted
{
get
{
return
_objectSource == BusinessObjectSource.FromD
_objectStatus == BusinessObjectStatus.Delet
}
set{}
}
[DataMember]
public bool IsUnchanged
{
get
{
return
_objectSource == BusinessObjectSource.FromD
_objectStatus == BusinessObjectStatus.Uncha
}
set{}
}
public virtual void Delete()
{
_objectStatus = BusinessObjectStatus.Delet
}
protected void SetNewPropertyValue<T>(strin
{
if (!theField.Value.Equals(ne
{
theField.Value = newValue;
FirePropertyChanged(name);
_changedFields.Add(name);
}
}
protected void FirePropertyChanged(string
{
_objectStatus = BusinessObjectStatus.Modif
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(p
}
/// <summary>
/// Call AcceptChange on all fields that support an AcceptChange method
/// </summary>
public virtual void AcceptChanges()
{
Type t = GetType();
System.Reflection.FieldInf
| System.Reflection.BindingF
| System.Reflection.BindingF
);
foreach (System.Reflection.FieldIn
{
// Get object reference for the field. Then we can call the property
IBOField fieldValue = field.GetValue(this) as IBOField;
if (fieldValue != null)
fieldValue.AcceptChange();
}
_objectSource = BusinessObjectSource.FromD
_objectStatus = BusinessObjectStatus.Uncha
_changedFields.Clear();
}
}
Main Topics
Browse All Topics





by: ToddBeaulieuPosted on 2009-08-12 at 08:30:09ID: 25079727
I suspect your problem is a plain old oversight in object creation. Can you post the definition of "FirePropertyChanged"?