Files
BeWoPlaner/BeWo/ViewModel/AbstractBaseVM.cs

101 lines
2.4 KiB
C#

using System;
using System.ComponentModel;
using BS.Shared;
using BS.Shared.Core;
namespace BeWo.ViewModel
{
public abstract class AbstractBaseVM : INotifyPropertyChanged
{
private bool _IsDirty;
public virtual bool IsDirty
{
get { return _IsDirty; }
}
public Type Type
{
get { return GetType(); }
}
public event PropertyChangedEventHandler PropertyChanged;
public virtual void SetDirty(bool newDirty)
{
_IsDirty = newDirty;
}
protected bool AreDifferent(object pMember, object pNewValue)
{
//if (pNewValue is string && pNewValue != null)
//{
// pNewValue = (pNewValue as string).Trim();
//}
if (pNewValue is string && ((string) pNewValue) == string.Empty)
{
return pMember != null && ((string) pMember) != string.Empty;
}
return (pMember == null && pNewValue != null) || (pMember != null && !pMember.Equals(pNewValue));
}
protected bool AreEqual(object x, object y)
{
NullCompareResult lResult = Utils.NullCompare(x, y);
return lResult.BothNotNull
? x.Equals(y)
: !lResult.Different;
}
//public bool HasLoggedOnUserRight(UserRightType type)
// {
// return BeWoApp.HasLoggedOnUserRight(type);
// }
public object Itself
{
get
{
return this;
}
}
public void FirePropertyChangedItself()
{
FirePropertyChanged(nameof(Itself));
}
protected virtual void FirePropertyChanged(string pPropertyName)
{
FirePropertyChanged(PropertyChanged, this, pPropertyName);
}
protected void FirePropertyChanged(PropertyChangedEventHandler handler, string pPropertyName)
{
FirePropertyChanged(handler, this, pPropertyName);
}
protected void FirePropertyChanged(object sender, string pPropertyName)
{
FirePropertyChanged(PropertyChanged, sender, pPropertyName);
}
protected void FirePropertyChanged(object sender, PropertyChangedEventArgs e)
{
FirePropertyChanged(PropertyChanged, sender, e);
}
protected void FirePropertyChanged(PropertyChangedEventHandler handler, object sender, string pPropertyName)
{
FirePropertyChanged(handler, sender, new PropertyChangedEventArgs(pPropertyName));
}
protected void FirePropertyChanged(PropertyChangedEventHandler handler, object sender, PropertyChangedEventArgs e)
{
_IsDirty = true;
handler?.Invoke(sender, e);
}
}
}