NotNull <TObj, TClass, T>(this NotifyConfigurator <TClass, T> c, Func <TClass, TObj> notnull) where TClass : class, INotifyPropertyChangedWithHelper where T : class, IChildObject // where TObj : class { return(c.When(e => !Equals(notnull(e), default(TObj)))); }
Foreign <TClass, T>(this NotifyConfigurator <TClass, PropertyHolder <T> > c, Expression <Func <TClass, int?> > idGetter ) where TClass : NotifierBase, IEntity, IDataServiceProvider where T : Entity { var getter = idGetter.Compile(); return(c .AddTriggerExpression(idGetter) .On(e => e.DataService) .NotNull(e => e.DataService) .Set(e => { //TODO : have an async setter var id = getter(e); if (id == null) { return default(T); } var task = Task.Run(() => e.DataService.FetchOneAsync <T>(id.Value)); task.Wait(); var result = task.Result; return result; }) ); }
Trig <TClass, TMember, T>(this NotifyConfigurator <TClass, TMember> c) where T : ITriggerable where TClass : class, INotifyPropertyChangedWithHelper where TMember : PropertyHolder <T> { return(c.Do((target, property) => property.Get().OnTriggered())); }
public static NotifyConfigurator <TClass, T> CanExecute <TClass, T>(this NotifyConfigurator <TClass, T> c, Func <TClass, bool> setter) where TClass : class, INotifyPropertyChangedWithHelper where T : CommandPropertyHolder { return(c .Do((target, cmd) => cmd.SetCanExecute(() => setter(target)))); }
public static NotifyConfigurator <TClass, T> Action <TClass, T>(this NotifyConfigurator <TClass, T> c, Action <TClass, object> action) where TClass : class, INotifyPropertyChangedWithHelper where T : CommandPropertyHolder { return(c .Do((target, cmd) => cmd.SetAction(o => action(target, o)))); }
public static NotifyConfigurator <TClass, TFilter> Link <TClass, TFilter>(this NotifyConfigurator <TClass, TFilter> c, Func <TClass, INotifyCollectionChanged> expression) where TClass : class, INotifyPropertyChangedWithHelper where TFilter : class, IObservableFilter { return(c .Do((target, filter) => filter.Link(() => expression(target)))); }
OnNotNull <TObj, TClass, T>(this NotifyConfigurator <TClass, T> c, Expression <Func <TClass, TObj> > expr) where TClass : class, INotifyPropertyChangedWithHelper where T : class, IChildObject { var f = expr.Compile(); return(c.AddTriggerExpression(expr).NotNull(f)); }
public static NotifyConfigurator <TClass, T> Action <TClass, T>(this NotifyConfigurator <TClass, T> c, Func <TClass, Task> action) where TClass : class, INotifyPropertyChangedWithHelper where T : CommandPropertyHolder { return(c .On().Do((target, cmd) => cmd.SetAction(() => action(target)))); }
Set <TClass, TMember, T>(this NotifyConfigurator <TClass, TMember> c, Func <TClass, T> setter) where TClass : class, INotifyPropertyChangedWithHelper where TMember : PropertyHolder <T> { if (c.CurrentTrigger.TriggerOnList.Count == 0) { var action = c.GetDoWhenAction((target, property) => property.PropertyValue.Set(setter(target))); c.Init(action); return(c.On().Do((target, property) => { property.SetProperty(new PropertyValueLazy <T>(property, o => setter((TClass)o))); })); } return(c.Do((target, property) => property.PropertyValue.Set(setter(target)))); }
Set <TClass, TMember, T>(this NotifyConfigurator <TClass, TMember> c, Func <TClass, Task <T> > setter) where TClass : class, INotifyPropertyChangedWithHelper where TMember : PropertyHolder <T> { if (c.CurrentTrigger.TriggerOnList.Count == 0) { return(c.On().Do((target, property) => property.SetProperty(new PropertyValueLazy <T>(property, o => { var t = setter((TClass)o); t.Wait(); return t.Result; })))); } return(c.Do(async(target, property) => { property.PropertyValue.Set(await setter(target)); })); }
ToolTip <TClass, TMember>(this NotifyConfigurator <TClass, TMember> c, string toolTip) where TClass : class, INotifyPropertyChangedWithHelper where TMember : CommandPropertyHolder { return(c.Do((target, member) => member.IconPath = toolTip)); }
CheckCanExecute <TClass, TMember>(this NotifyConfigurator <TClass, TMember> c) where TClass : class, INotifyPropertyChangedWithHelper where TMember : CommandPropertyHolder { return(c.Do((target, member) => member.SetCanExecute())); }
OneWayBind <TClass, TMember, T>(this NotifyConfigurator <TClass, TMember> c, Expression <Func <TClass, T> > expr) where TClass : class, INotifyPropertyChangedWithHelper where TMember : PropertyHolder <T> { return(c.Set(expr.Compile()).AddTriggerExpression(expr).Update()); }
public static NotifyConfigurator <TClass, PropertyHolder <TClass, T> > Foreign <TClass, T>(this NotifyConfigurator <TClass, PropertyHolder <TClass, T> > c, Expression <Func <TClass, int?> > idGetter ) where TClass : NotifierBase, IEntity where T : Entity <T> { var getter = idGetter.Compile(); return(c .TriggerExpression(idGetter) .Set(e => e.Context.Db.FetchOne <T>(getter(e) ?? default))); }
public static NotifyConfigurator <TClass, PropertyHolder <TClass, ObservableQuery <T> > > Foreign <TClass, T>(this NotifyConfigurator <TClass, PropertyHolder <TClass, ObservableQuery <T> > > c, Expression <Func <T, int?> > idGetter ) where TClass : Entity <TClass> //NotifierBase,IEntity where T : Entity <T> { var getter = idGetter.Compile(); return(c // .TriggerExpression(idGetter) // .Do((a, p) => p.Get().OnTriggered()) // .Do((a, p) => p.Get()); .Set(e => new ObservableQuery <T>(e.Context.Db) { } .AddFilter(f => getter(f) == e.Id).FluentUpdate())); }
Set <TClass, TMember, T>(this NotifyConfigurator <TClass, TMember> c, Action <TClass, T> action) where TClass : class, INotifyPropertyChangedWithHelper where TMember : PropertyHolder <T> { return(c.Do((target, property) => action(target, property.Get()))); }
On <TClass, T>(this NotifyConfigurator <TClass, T> c, Expression <Func <TClass, object> > expr) where TClass : class, INotifyPropertyChangedWithHelper where T : class, IChildObject { return(c.AddTriggerExpression(expr)); }
public static NotifyConfigurator <TClass, ObservableFilterPropertyHolder <T> > AddFilter <TClass, T>(this NotifyConfigurator <TClass, ObservableFilterPropertyHolder <T> > c, Func <T, bool> expression) where TClass : class, INotifyPropertyChangedWithHelper { return(c .Do((target, filter) => filter.AddFilter(expression))); }
public static NotifyConfigurator <TClass, PropertyHolder <ObservableQuery <T> > > Foreign <TClass, T>(this NotifyConfigurator <TClass, PropertyHolder <ObservableQuery <T> > > c, Expression <Func <T, int?> > idGetter ) where TClass : Entity, IDataServiceProvider //NotifierBase,IEntity where T : Entity { var getter = idGetter.Compile(); return(c .Set(e => new ObservableQuery <T>(e.DataService) .AddFilter(() => f => getter(f) == e.Id).FluentUpdate())); }
Default <TClass, TMember, T>(this NotifyConfigurator <TClass, TMember> c, T @default) where TClass : class, INotifyPropertyChangedWithHelper where TMember : PropertyHolder <T> { return(c.Set(target => @default)); }