Browse Source

Xaml Object

When using GetPrefixOfNamespace the XMLElement may not yet be in the XML Tree, but the Xaml Object has it ParentObject Property already set, so use this!
pull/52/head
jkuehner 13 years ago
parent
commit
71897c0ffc
  1. 23
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlObject.cs

23
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlObject.cs

@ -105,9 +105,26 @@ namespace ICSharpCode.WpfDesign.XamlDom
} }
} }
static XmlElement VirtualAttachTo(XmlElement e, XmlElement target) string GetPrefixOfNamespace(string ns, XmlElement target)
{ {
var prefix = target.GetPrefixOfNamespace(e.NamespaceURI); var prefix = target.GetPrefixOfNamespace(ns);
if (!string.IsNullOrEmpty(prefix))
return prefix;
var obj = this;
while (obj != null)
{
prefix = obj.XmlElement.GetPrefixOfNamespace(ns);
if (!string.IsNullOrEmpty(prefix))
return prefix;
obj = obj.ParentObject;
}
return null;
}
XmlElement VirtualAttachTo(XmlElement e, XmlElement target)
{
var prefix = GetPrefixOfNamespace(e.NamespaceURI, target);
XmlElement newElement = e.OwnerDocument.CreateElement(prefix, e.LocalName, e.NamespaceURI); XmlElement newElement = e.OwnerDocument.CreateElement(prefix, e.LocalName, e.NamespaceURI);
foreach (XmlAttribute a in target.Attributes) { foreach (XmlAttribute a in target.Attributes) {
@ -174,7 +191,7 @@ namespace ICSharpCode.WpfDesign.XamlDom
XamlObject holder; XamlObject holder;
if (!UpdateXmlAttribute(false, out holder)) { if (!UpdateXmlAttribute(false, out holder)) {
if (holder != null && if (holder != null &&
holder.XmlAttribute != null) { holder.XmlAttribute != null) {
holder.XmlAttribute.OwnerElement.RemoveAttributeNode(holder.XmlAttribute); holder.XmlAttribute.OwnerElement.RemoveAttributeNode(holder.XmlAttribute);
holder.xmlAttribute = null; holder.xmlAttribute = null;
holder.ParentProperty.AddChildNodeToProperty(holder.element); holder.ParentProperty.AddChildNodeToProperty(holder.element);

Loading…
Cancel
Save