Files
BeWoPlaner/BeWo/ViewModel/AbstractBaseVM.cs

124 lines
3.0 KiB
C#
Raw Normal View History

2016-06-27 01:45:38 +02:00
using System;
using System.Collections.Generic;
2016-06-27 01:45:38 +02:00
using System.ComponentModel;
using System.Linq;
2024-08-30 13:07:53 +02:00
using BS.Shared;
2016-06-27 01:45:38 +02:00
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)
{
2017-10-20 11:41:39 +02:00
//if (pNewValue is string && pNewValue != null)
//{
// pNewValue = (pNewValue as string).Trim();
//}
2016-06-27 01:45:38 +02:00
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 AreDifferent<T>(object pMember, object pNewValue)
{
if(pMember is IEnumerable<T> l1 && pNewValue is IEnumerable<T> l2)
{
return !Enumerable.SequenceEqual(l1, l2);
}
return AreDifferent(pMember, pNewValue);
}
2016-06-27 01:45:38 +02:00
protected bool AreEqual(object x, object y)
{
NullCompareResult lResult = Utils.NullCompare(x, y);
return lResult.BothNotNull
? x.Equals(y)
: !lResult.Different;
}
2024-08-30 13:07:53 +02:00
//public bool HasLoggedOnUserRight(UserRightType type)
2024-10-18 16:09:17 +02:00
// {
2024-08-30 13:07:53 +02:00
// return BeWoApp.HasLoggedOnUserRight(type);
2024-10-18 16:09:17 +02:00
// }
public object Itself
{
get
{
return this;
}
}
public void FirePropertyChangedItself()
{
FirePropertyChanged(nameof(Itself));
}
2024-08-30 13:07:53 +02:00
2016-06-27 01:45:38 +02:00
protected virtual void FirePropertyChanged(string pPropertyName)
2024-07-18 13:19:40 +02:00
{
2024-07-23 11:35:36 +02:00
FirePropertyChanged(PropertyChanged, this, pPropertyName);
2024-07-18 13:19:40 +02:00
}
protected void FirePropertyChanged(PropertyChangedEventHandler handler, string pPropertyName)
2024-07-23 11:35:36 +02:00
{
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)
2016-06-27 01:45:38 +02:00
{
_IsDirty = true;
2024-07-23 11:35:36 +02:00
handler?.Invoke(sender, e);
2016-06-27 01:45:38 +02:00
}
2025-07-07 11:52:34 +02:00
protected bool SetProperty<T>(ref T field, T value, string propertyName, Func<T> originalValueProvider = null)
{
if (EqualityComparer<T>.Default.Equals(field, value))
return false;
field = value;
FirePropertyChanged(propertyName);
return true;
}
2016-06-27 01:45:38 +02:00
}
}