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(); }
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); }
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(); }
private SettingsProperty ConfigureStringProperty(ViewModelProperty<string> property) { return new SettingsProperty(s => property.Value = s, () => property.Value); }
set => SetValue(ViewModelProperty, value);
private static void NewViewModelProperty(string type) { viewModelProperty = new ViewModelProperty("Username", type, false); }
/// <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 } } ; } } }
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);
get => (EditMembersDialogViewModel)GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value);
get => (MainWindowViewModel)GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value);
get => (AxisOutputNode)GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value);
private ProgressViewModel() { Text = new ViewModelProperty<string>(); }
set => this.SetValue(ViewModelProperty, value);
this.RegisterPropertyChangedCallback(ViewModelProperty, (_, __) =>
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)); }
get => (TViewModel)GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value);
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);