/// <summary> /// Initializes a new instance of the <see cref="ScreenModel"/> class. /// </summary> /// <param name="definition">The definition.</param> /// <exception cref="System.ArgumentException">Required container property is not present in the screen definition</exception> public ScreenModel(UIControlDefinitionModel definition, ProjectModel projectOwner) : base(projectOwner, null, definition) { System.Diagnostics.Debug.Assert(definition != null, "Screen definition can't be null"); //System.Diagnostics.Debug.Assert(!string.IsNullOrEmpty(definition.Name) && (definition.Name.Equals("screen", StringComparison.OrdinalIgnoreCase) || definition.Name.Equals("view", StringComparison.OrdinalIgnoreCase)), "definition must be for screen or view"); System.Diagnostics.Debug.Assert(projectOwner != null, "Project owner can't be null"); this.ParentProject = projectOwner; string containerPropertyName = "items"; if (!string.IsNullOrEmpty(definition.ContainerProperty)) { containerPropertyName = definition.ContainerProperty; } containerAttribute = this.ControlDefinition.AllAttributes.FirstOrDefault(a => a.Name == containerPropertyName); //if (containerAttribute == null) //{ // throw new ArgumentException("Required container property is not present in the screen definition"); //} }
/// <summary> /// Serializes the attribute value. /// </summary> /// <param name="baseElement">The base element.</param> /// <param name="key">The key.</param> /// <param name="value">The value.</param> /// <returns></returns> private void SerializeAttributeValue(XElement baseElement, AttributeModel key) { string value = string.Empty; object typedValue = mAttributes[key]; if (typedValue != null) { switch (key.AttributeType.ToLowerInvariant()) { case "collection": // only collections are special cases { TrulyObservableCollection <UIControlInstanceModel> collection = typedValue as TrulyObservableCollection <UIControlInstanceModel>; if (collection.Count > 0) { AddToXMLChildElementsByID(baseElement, key.Name, collection); } } break; default: { AttributeValueConverter valueConverter = new AttributeValueConverter(); value = valueConverter.Convert(typedValue, typeof(string), key.AttributeType, System.Globalization.CultureInfo.InvariantCulture) as string; } break; } } else { value = string.Empty; } if (!string.IsNullOrEmpty(value)) { baseElement.SetAttributeValue(key.Name.ToLowerInvariant(), value); } }