コード例 #1
0
        public static ICommand <ReduceRequest> FindReduceCommand(this IViewModelMutable @this)
        {
            var node = @this;

            while (node.Parent != null)
            {
                node = node.Parent;
            }
            return(((IViewModelRootMutable)node).ReduceCommand);
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 /// <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;
 }