diff --git a/CSharp/Libraries/UniversalEditor.Essential/ObjectModels/Markup/MarkupContainerElement.cs b/CSharp/Libraries/UniversalEditor.Essential/ObjectModels/Markup/MarkupContainerElement.cs index 4b8d66a4..bcab359f 100644 --- a/CSharp/Libraries/UniversalEditor.Essential/ObjectModels/Markup/MarkupContainerElement.cs +++ b/CSharp/Libraries/UniversalEditor.Essential/ObjectModels/Markup/MarkupContainerElement.cs @@ -132,7 +132,7 @@ namespace UniversalEditor.ObjectModels.Markup if (attID != null) id = attID.Value; } - if (Elements.Contains(el1.FullName, id)) + if (Elements.Contains(el1.FullName, id, (el1 is MarkupTagElement ? (el1 as MarkupTagElement).Attributes : null))) { Elements[el1.FullName].Combine(el1); } diff --git a/CSharp/Libraries/UniversalEditor.Essential/ObjectModels/Markup/MarkupElement.cs b/CSharp/Libraries/UniversalEditor.Essential/ObjectModels/Markup/MarkupElement.cs index 673c56de..10c83038 100644 --- a/CSharp/Libraries/UniversalEditor.Essential/ObjectModels/Markup/MarkupElement.cs +++ b/CSharp/Libraries/UniversalEditor.Essential/ObjectModels/Markup/MarkupElement.cs @@ -82,7 +82,7 @@ namespace UniversalEditor.ObjectModels.Markup item.ParentObjectModel = this._parentObjectModel; base.Add(item); } - public bool Contains(string fullName, string id = null) + public bool Contains(string fullName, string id = null, MarkupAttribute.MarkupAttributeCollection attributes = null) { MarkupElement el = this[fullName]; MarkupTagElement tag = (el as MarkupTagElement); @@ -92,6 +92,18 @@ namespace UniversalEditor.ObjectModels.Markup MarkupAttribute attID = tag.Attributes["ID"]; if (attID != null) retval &= (id == attID.Value); } + + if (tag != null && attributes != null) + { + for (int i = 0; i < attributes.Count; i++) + { + MarkupAttribute att = tag.Attributes[attributes[i].Name]; + if (att != null && att.Value != attributes[i].Value) + { + return false; + } + } + } return retval; } public bool Contains(string fullName, Type elementType)