Add project files.

This commit is contained in:
Daniel Clark
2022-11-01 15:26:08 +00:00
parent daa7b59f22
commit 7e4f880821
408 changed files with 16863 additions and 0 deletions
@@ -0,0 +1,64 @@
using System;
using System.Linq.Expressions;
namespace TheXamlGuy.Framework.Core
{
public class PropertyBuilder : IPropertyBuilder
{
public PropertyBuilder(IPropertyBinderCollection binders)
{
Binders = binders;
}
public IPropertyBinderCollection Binders { get; }
public void Add<TProperty>(Expression<Func<TProperty>> property, PropertyValidation propertyChangedValidation)
{
string? name = GetPropertyName(property);
Binders.Add(name, new PropertyBinder(name, propertyChangedValidation));
}
public void Add<TProperty>(Expression<Func<TProperty>> property, Action propertyChanged,
PropertyValidation propertyChangedValidation)
{
string? name = GetPropertyName(property);
Binders.Add(name, new PropertyBinder(name, propertyChanged, propertyChangedValidation));
}
public void Add<TProperty>(Expression<Func<TProperty>> property, Action propertyChanged)
{
string? name = GetPropertyName(property);
Binders.Add(name, new PropertyBinder(name, propertyChanged));
}
public void Add<TProperty>(Expression<Func<TProperty>> property, PropertyValidation propertyChangedValidation, PropertyChangedMode mode)
{
string? name = GetPropertyName(property);
Binders.Add(name, new PropertyBinder(name, propertyChangedValidation, mode));
}
public void Add<TProperty>(Expression<Func<TProperty>> property, Action propertyChanged, PropertyValidation propertyChangedValidation, PropertyChangedMode mode)
{
string? name = GetPropertyName(property);
Binders.Add(name, new PropertyBinder(name, propertyChanged, propertyChangedValidation, mode));
}
public void Add<TProperty>(Expression<Func<TProperty>> property, Action propertyChanged, PropertyChangedMode mode)
{
string? name = GetPropertyName(property);
Binders.Add(name, new PropertyBinder(name, propertyChanged, mode));
}
private string GetPropertyName<T>(Expression<Func<T>> predicate)
{
if (predicate is null)
{
throw new ArgumentNullException(nameof(predicate));
}
Expression? body = predicate.Body;
MemberExpression? memberExpression = body as MemberExpression ?? (MemberExpression)((UnaryExpression)body).Operand;
return memberExpression.Member.Name;
}
}
}