/// <summary> /// Read XAML formatted text into message types. /// </summary> /// <param name="contents"></param> public void ReadConfig(string contents) { Regex typeDetails = new Regex(@"(\w+)\s*=\s*""([\w\s]+)"""), fieldReg = new Regex(@"<\s*Field\s+(.*?)\\\s*(Field\s*)?>", RegexOptions.Singleline); MatchCollection detailMatches, fieldMatches; MessageFieldModel messageFieldModel; // Return if invalid if (null == contents) { return; } // Set general Type details if (typeDetails.IsMatch(contents)) { detailMatches = typeDetails.Matches(contents); ReadProperties(detailMatches); } // Define fields for each field found if (fieldReg.IsMatch(contents)) { fieldMatches = fieldReg.Matches(contents); foreach (Match fieldMatch in fieldMatches) { messageFieldModel = new MessageFieldModel(); messageFieldModel.ReadConfig(fieldMatch.Groups[1].Value); MessageFields.Add(messageFieldModel); } } }
// Copy Constructor public MessageFieldModel(MessageFieldModel copy) { MessageFieldDetails = new MessageFieldDetailsModel(copy.MessageFieldDetails); CurrentField = MessageFieldDetails; ZIndex = copy.ZIndex; }