@ -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 ) ;