Esempio n. 1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ValidationParameter"/> struct.
 /// </summary>
 /// <param name="propertyMetadata">The property metadata.</param>
 /// <param name="propertyInstance">The property instance.</param>
 /// <param name="propertyValue">The property value.</param>
 /// <param name="cancellationToken">The cancellation token.</param>
 public ValidationParameter(PropertyInfo propertyMetadata, IViewModelProperty propertyInstance, object propertyValue, CancellationToken cancellationToken) : this()
 {
     _propertyMetadata  = propertyMetadata;
     _propertyInstance  = propertyInstance;
     _propertyValue     = propertyValue;
     _cancellationToken = cancellationToken;
 }
        /// <summary>
        /// Set the targeted ViewModel
        /// </summary>
        public void SetViewModel(ViewModelInfo vm)
        {
            var type = vm.ViewModel.GetType();

            Properties.Clear();
            foreach (var prop in type.GetProperties().OrderBy(e => e.Name))
            {
                IViewModelProperty property = null;
                if (prop.PropertyType == typeof(string))
                {
                    property = new StringViewModelProperty(vm.ViewModel, prop);
                }
                else if (prop.PropertyType == typeof(bool))
                {
                    property = new BoolViewModelProperty(vm.ViewModel, prop);
                }
                else if (prop.PropertyType == typeof(ICommand) || prop.PropertyType.GetInterfaces().Any(e => e == typeof(ICommand)))
                {
                    property = new CommandViewModelProperty(vm.ViewModel, prop);
                }

                if (property == null)
                {
                    property = new ObjectViewModelProperty(vm.ViewModel, prop);
                }
                property.ReadValue();
                Properties.Add(property);
            }
        }
Esempio n. 3
0
        public static EqualToExpression EqualToProperty(IViewModelProperty property, IViewModelProperty valueProperty)
        {
            var leftValueProvider  = new Func <object>(property.GetValue);
            var rightValueProvider = new Func <object>(valueProperty.GetValue);

            return(EqualToGeneric(leftValueProvider, rightValueProvider));
        }
Esempio n. 4
0
        public static EqualToExpression EqualToLateValue(IViewModelProperty property, LateValue <object> lateValue)
        {
            var leftValueProvider  = new Func <object>(property.GetValue);
            var rightValueProvider = new Func <object>(() => lateValue());

            return(EqualToGeneric(leftValueProvider, rightValueProvider));
        }
Esempio n. 5
0
        public static LessThanExpression LessThanLateValue(IViewModelProperty property, LateValue <object> lateValue)
        {
            var leftValueProvider  = new Func <object>(property.GetValue);
            var rightValueProvider = new Func <object>(() => lateValue());

            return(LessThanGeneric(leftValueProvider, rightValueProvider));
        }
Esempio n. 6
0
        public static LessThanExpression LessThanProperty(IViewModelProperty property, IViewModelProperty valueProperty)
        {
            var leftValueProvider  = new Func <object>(property.GetValue);
            var rightValueProvider = new Func <object>(valueProperty.GetValue);

            return(LessThanGeneric(leftValueProvider, rightValueProvider));
        }
Esempio n. 7
0
        public static GreaterThanExpression GreaterThanValue(IViewModelProperty property, object value)
        {
            var leftValueProvider  = new Func <object>(property.GetValue);
            var rightValueProvider = new Func <object>(() => value);

            return(GreaterThanGeneric(leftValueProvider, rightValueProvider));
        }
Esempio n. 8
0
 protected override void OnCreateViewModelProperties()
 {
     FirstName   = CreateValueProperty(Model.FirstName);
     LastName    = CreateValueProperty(Model.LastName);
     PhoneNumber = CreateValueProperty(Model.PhoneNumber);
     Sex         = CreateEnumProperty(Model.Sex);
     DateOfBirth = CreateValueProperty(Model.DateOfBirth);
     DateOfDeath = CreateValueProperty(Model.DateOfDeath);
     Email       = CreateValueProperty(Model.Email);
 }
        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);
        }
Esempio n. 10
0
 /// <summary>
 /// Register the view model property so that it can participate in refreshing command procedure.
 /// </summary>
 private void RegisterViewModelProperty(IViewModelProperty property)
 {
     _registeredProperties.Add(property);
 }
Esempio n. 11
0
        public static CustomValidationExpression CustomValidation(IViewModelProperty property, CustomValidator <object> customValidator)
        {
            var leftValueProvider = new Func <object>(property.GetValue);

            return(new CustomValidationExpression(leftValueProvider, customValidator));
        }
Esempio n. 12
0
        public static MatchingExpression MatchingProperty(IViewModelProperty property, string pattern)
        {
            var evaluatedValueProvider = new Func <object>(property.GetValue);

            return(MatchingGeneric(evaluatedValueProvider, pattern));
        }
 /// <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;
 }