public void CheckOnChangedAction()
		{
			var changed = new List<string>();
			var changing = new List<string>();

			var notifyViewModel = new NotifyViewModel(changed, changing);
			
			const string PropertyName = "Property";

			var dependent = new Dictionary<string, string[]>();
			Action<string, string[]> addToDependent = dependent.Add;

			var property = new ViewModelProperty<int>(notifyViewModel, addToDependent, PropertyName);
			var viewModelProperty = (IViewModelProperty<int>)property;

			var values = new List<int>();
			viewModelProperty.OnChanged(values.Add);

			const int Value = 10;

			property.SetValue(Value, false).Should().Be.True();
			property.Changed(() => Value);

			changing.Should().Have.SameSequenceAs(PropertyName);
			changed.Should().Have.SameSequenceAs(PropertyName);

			values.Should().Have.SameSequenceAs(Value);
		}
		public HumanViewModel()
		{
			FullName = new ViewModelProperty<string>()
			{
				Validator = { ValidateFullName },
				Source = FirstName.CombineLatest(LastName, (firstName, lastName) => string.Join(" ", firstName, lastName))
			};
			
			this.RegisterViewModelChildren();
		}
Esempio n. 3
0
        protected ViewBase(string projectName, string assemblyName, string classFullName, string className)
            : base(projectName, assemblyName, classFullName, className)
        {
            Model.ViewDataType = new ViewDataType
                                     {
                                         FullName = Model.ModelType,
                                         Name = Model.ModelName
                                     };
            Model.ViewDataType.ViewModelProperties = new List<ViewModelProperty>();

            var component = GetComponent();

            var entity =
                component.EntityCollection.SingleOrDefault(
                    c => c.Namespace == Model.ModelTypeNamespace && c.Code == Model.ModelName);
            if (entity == null)
            {
                HasError = true;
                return;
            }
            Model.EntityName = entity.Name;
            Model.IsApprovalOrder = entity.EntityType == EntityType.Order;

            var properties = entity.PropertyCollection;

            foreach (var property in properties)
            {
                ViewModelProperty viewModelProperty = new ViewModelProperty();
                viewModelProperty.DisplayName = property.Name;
                viewModelProperty.IsDateTime = property.Type == MetaDataType.Datetime;
                viewModelProperty.IsDecimal = property.Type == MetaDataType.Decimal;
                viewModelProperty.IsEnum = property.Type == MetaDataType.Enumeration;
                viewModelProperty.IsForeignKey = property.Type == MetaDataType.Entity;
                viewModelProperty.IsGeneric = false;
                viewModelProperty.IsInt = property.Type == MetaDataType.Integer;
                viewModelProperty.IsPrimaryKey = property.Code == "ID";
                viewModelProperty.IsReadOnly = false;
                viewModelProperty.IsRefType = property.Type == MetaDataType.Entity;
                viewModelProperty.Name = property.Code;
                viewModelProperty.Type = property.MetaDataType;

                Model.ViewDataType.ViewModelProperties.Add(viewModelProperty);
            }
        }
 set => SetSpeechBubbleContentViewModelValue(ViewModelProperty, value);
 set { SetValue(ViewModelProperty, value); }
Esempio n. 6
0
        private void Initialise()
        {
            FirstName = _properties.New<string>("FirstName", () => _controller.Person.FirstName)
               .WithDescription("First Name")
               .WithEditability(false)
               .Build();
            SecondName = _properties.New<string>("SecondName", () => _controller.Person.SecondName)
                .WithDescription("Second Name")
                .WithEditability(false)
                .Build();
            DateOfBirth = _properties.New<DateTime>("DateOfBirth", () => _controller.Person.DateOfBirth)
                .WithDescription("Date of Birth")
                .WithEditability(false)
                .WithFormat("yyyy-MM-dd")
                .Build();
            Age = _properties.New<int>("Age", () => GetAge(_controller.Person.DateOfBirth))
                .WithDescription("Age")
                .WithEditability(false)
                .WithFormat("# year(s) old")
                .Build();
            City = _properties.New<string>("City", () => _controller.Person.City)
                .WithDescription("City")
                .WithValidation(v => !string.IsNullOrEmpty(v))
                .Build();
            Occupation = _properties.New<string>("Occupation", () => _controller.Person.Occupation)
                .WithDescription("Occupation")
                .Build();

            ResetCommand = _properties.NewCommand<DelegateCommand>("ResetCommand", new DelegateCommand(Reset));
            SaveCommand = _properties.NewCommand<DelegateCommand>("SaveCommand", new DelegateCommand(Save, () => _properties.IsValid && _properties.IsUpdated));
            CopyCommand = _properties.NewCommand<DelegateCommand>("CopyCommand", new DelegateCommand(Copy));
            _properties.PropertyValueUpdated += (s, a) => SaveCommand.Command.UpdateCanExecute();
        }
Esempio n. 7
0
 private SettingsProperty ConfigureStringProperty(ViewModelProperty<string> property)
 {
     return new SettingsProperty(s => property.Value = s, () => property.Value);
 }
 set => SetValue(ViewModelProperty, value);
Esempio n. 9
0
 private static void NewViewModelProperty(string type)
 {
     viewModelProperty = new ViewModelProperty("Username", type, false);
 }
Esempio n. 10
0
        /// <summary>
        /// 將檢視模型的內容抄寫到非資料實體模型物件。
        /// </summary>
        /// <typeparam name="T">要抄寫的目標物件型別</typeparam>
        /// <param name="entity"></param>
        /// <returns></returns>
        protected void CopyToModel <TViewB, TB>(TB entity, TViewB ViewModel) where TViewB : IBaseViewModel where TB : class
        {
            if (!Dispatcher.CheckAccess())
            {
                Dispatcher.Invoke(new Action <TB, TViewB>(CopyToModel), DispatcherPriority.Normal, entity, ViewModel);
            }
            else
            {
                try
                {
                    if (entity == null)
                    {
                        entity = Activator.CreateInstance <TB>();
                    }

                    Type CurrentViewModelType = ViewModel.GetType();
                    Type TargetEntity         = entity.GetType();
#if DEBUG
                    Debug.WriteLine("CopyToModel");
                    Debug.WriteLine(string.Format("資料實體{0},檢視模型為{1}", TargetEntity.Name, CurrentViewModelType.Name));
                    Debug.WriteLine("開始抄寫.");
#endif
                    var CurrentViewModel_Property = CurrentViewModelType.GetProperties();

                    foreach (var ViewModelProperty in CurrentViewModel_Property)
                    {
                        try
                        {
                            var EntityProperty = TargetEntity.GetProperty(ViewModelProperty.Name);
                            if (EntityProperty != null)
                            {
                                var entityvalue = EntityProperty.GetValue(entity);
                                var value       = ViewModelProperty.GetValue(ViewModel);

                                if (EntityProperty.PropertyType.IsGenericType && EntityProperty.PropertyType.GetGenericTypeDefinition().Name == (typeof(ICollection <>).Name))
                                {
                                    continue;
                                }

                                if (ViewModelProperty.PropertyType.IsGenericType && ViewModelProperty.PropertyType.GetGenericTypeDefinition().Name == (typeof(ObservableCollection <>).Name))
                                {
                                    continue;
                                }

                                if (ViewModelProperty.PropertyType.BaseType.IsGenericType && ViewModelProperty.PropertyType.BaseType.GetGenericTypeDefinition().Name == (typeof(ObservableCollection <>).Name))
                                {
                                    continue;
                                }

                                if (ViewModelProperty.PropertyType.BaseType.IsGenericType && ViewModelProperty.PropertyType.BaseType.GetGenericTypeDefinition().Name == (typeof(BaseViewModelCollection <>).Name))
                                {
                                    continue;
                                }

#if DEBUG
                                Debug.WriteLine(string.Format("資料實體屬性 {0}({2}) 內容值為 {1}.\n", EntityProperty.Name, entityvalue, EntityProperty.PropertyType.Name));
                                Debug.WriteLine(string.Format("檢視模型屬性 {0}({2}) 內容值為 {1}.\n", ViewModelProperty.Name, value, ViewModelProperty.PropertyType.Name));
#endif
                                if (value != null && !value.Equals(entityvalue))
                                {
                                    EntityProperty.SetValue(entity, value);
                                }
#if DEBUG
                                Debug.WriteLine(string.Format("抄寫後資料實體屬性 {0}({2}) 內容值為 {1}.\n", EntityProperty.Name, EntityProperty.GetValue(entity), EntityProperty.PropertyType.Name));
#endif
                            }
                        }
                        catch (Exception ex)
                        {
                            setErrortoModel(ViewModel, ex);
                            continue;
                        }
                    }
#if DEBUG
                    Debug.WriteLine("結束抄寫.");
#endif
                }
                catch (Exception ex)
                {
                    if (ViewModel != null)
                    {
                        ViewModel.Errors = new string[] { ex.Message + "," + ex.StackTrace }
                    }
                    ;
                }
            }
        }
Esempio n. 11
0
 get => (UserLockoutInfoViewModel)GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value);
 get => (ButtonOutputNode)GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value);
 get => (ProjectUpdateCardViewModel)GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value);
 set => SetDependencyPropertyValue(ViewModelProperty, value);
Esempio n. 15
0
 get => (EditMembersDialogViewModel)GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value);
Esempio n. 16
0
 get => (MainWindowViewModel)GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value);
 get => (AxisOutputNode)GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value);
Esempio n. 18
0
 private ProgressViewModel()
 {
     Text = new ViewModelProperty<string>();
 }
Esempio n. 19
0
 set => this.SetValue(ViewModelProperty, value);
Esempio n. 20
0
this.RegisterPropertyChangedCallback(ViewModelProperty, (_, __) =>
Esempio n. 21
0
 private SettingsProperty ConfigureIntProperty(ViewModelProperty<int> property)
 {
     return new SettingsProperty(s =>
     {
         int value;
         if (int.TryParse(s, NumberStyles.Number, CultureInfo.InvariantCulture, out value)) property.Value = value;
     }, () => property.Value.ToString(CultureInfo.InvariantCulture));
 }
Esempio n. 22
0
 get => (TViewModel)GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value);
Esempio n. 23
0
 private SettingsProperty ConfigureBoolProperty(ViewModelProperty<bool> property)
 {
     return new SettingsProperty(s =>
     {
         bool value;
         if (bool.TryParse(s, out value)) property.Value = value;
     }, () => property.Value.ToString(CultureInfo.InvariantCulture));
 }
 get => (PermittedWorkstationsDialogViewModel)GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value);