/// <summary> Registers a read-only view model property. /// </summary> /// <param name="name">The name of the property.</param> /// <param name="propertyType">Type of the property.</param> /// <param name="ownerType">Type of the owner.</param> /// <param name="typeMetadata">The type metadata.</param> /// <param name="validateValueCallback">The validate value callback.</param> /// <returns></returns> /// <remarks></remarks> public static ViewModelPropertyKey RegisterReadOnly(string name, Type propertyType, Type ownerType, ViewModelMetadata typeMetadata, ValidateValueCallback validateValueCallback) { var property = new ModelProperty(name, propertyType, ownerType, typeMetadata, validateValueCallback, true); var key = new ViewModelPropertyKey(property); PropertyCache.Register(property); return(key); }
/// <summary> Sets the local value of a read-only dependency property, specified by the System.Windows.DependencyPropertyKey identifier of the dependency property. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key">The <see cref="ViewModelPropertyKey"/> identifier of the property to set.</param> /// <param name="value"> The new local value.</param> public void SetValue <T>(ViewModelPropertyKey key, T value) { var prevValue = GetValue <T>(key.ViewModelProperty); if (_propertyValues.ContainsKey(key)) { _propertyValues[key] = value; } else { _propertyValues.Add(key, value); } if (!Equals(prevValue, value)) { OnPropertyChanged(key.ViewModelProperty); } }