public static ICommand <ReduceRequest> FindReduceCommand(this IViewModelMutable @this) { var node = @this; while (node.Parent != null) { node = node.Parent; } return(((IViewModelRootMutable)node).ReduceCommand); }
public static IViewModelMutable[] NodesFromRootToSelf(this IViewModelMutable @this) { var list = new List <IViewModelMutable>(); var node = @this; while (node != null) { list.Add(node); node = node.Parent; } list.Reverse(); return(list.ToArray()); }
public static void OnSet(this IViewModelMutable @this, IViewModelProperty property, object value) { PropertyChange[] changes; { var list = new List <PropertyChange>(); var node = @this; var p = property; var v = value; while (node != null) { list.Add(new PropertyChange(node, p, v)); p = node.StateProperty; v = node; node = node.Parent; } list.Reverse(); changes = list.ToArray(); } var request = new ReduceRequest(changes); var root = (IViewModelRootMutable)(changes[0].ViewModel); root.ReduceCommand.Execute(request); }
/// <summary>Record Constructor</summary> /// <param name="viewModel"><see cref="ViewModel"/></param> /// <param name="property"><see cref="Property"/></param> /// <param name="oldValue"><see cref="OldValue"/></param> /// <param name="newValue"><see cref="NewValue"/></param> public PropertyChange(IViewModelMutable viewModel, IViewModelProperty property, object newValue) { ViewModel = viewModel; Property = property; NewValue = newValue; }