Xml XamlWriter.Save(对象)-设置根;附加名称空间
我正在通过Xml XamlWriter.Save(对象)-设置根;附加名称空间,xml,wpf,xaml,xml-namespaces,xamlwriter,Xml,Wpf,Xaml,Xml Namespaces,Xamlwriter,我正在通过XamlWriter.Save(object)序列化一个对象。这正如预期的那样有效 现在的问题是,XamlWriter根据需要设置名称空间,例如根名称空间xmlns设置为我的对象的名称空间 问题是,我想将xaml复制到现有的xaml中,其中已经定义了名称空间。它可以工作,因为XamlWriter还将名称空间属性添加到生成的字符串中,但我希望重用我已经存在的前缀。这可能吗 样本XAML: <Grid xmlns="http://schemas.microsoft.com/winfx
XamlWriter.Save(object)
序列化一个对象。这正如预期的那样有效
现在的问题是,XamlWriter
根据需要设置名称空间,例如根名称空间xmlns
设置为我的对象的名称空间
问题是,我想将xaml复制到现有的xaml中,其中已经定义了名称空间。它可以工作,因为XamlWriter
还将名称空间属性添加到生成的字符串中,但我希望重用我已经存在的前缀。这可能吗
样本XAML:
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:assembly="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:shared="urn:mlog-sharedclasses-ns"
xmlns:visu="urn:mlog-visucommon-ns"
Width="2000"
Height="1000"
Background="White"
TextBlock.FontFamily="{StaticResource OpenSans}"
assembly:Name="rootElement"
mc:Ignorable="d">
<Grid.Resources>
<BoolToBrushConverter xmlns="clr-namespace:ControlPanel.SharedClasses.Converters;assembly=MCC.ControlPanel.SharedClasses"
FalseValue="#FF00FFFF"
TrueValue="#FF0000FF"
assembly:Key="ID_880cf_BorderBrush_Converter" />
</Grid.Resources>
<visu:TagRootCanvas>
<Button Content="Button"
Width="412"
Height="231"
Canvas.Left="33"
Canvas.Top="71"
assembly:Name="ID_880cf">
<i:Interaction.Behaviors>
<visu:TagBindingBehavior xmlns:av="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns="urn:mlog-visucommon-ns"
Converter="{av:StaticResource ID_880cf_BorderBrush_Converter}"
Debug="False"
Mode="OneWay"
Property="{shared:Static Member=av:Border.BorderBrushProperty}"
TagDataType="Bool"
TagName="aaa"
UpdateSourceTrigger="Default"
UseConvertedNullAsFallback="False" />
</i:Interaction.Behaviors>
</Button>
</visu:TagRootCanvas>
</Grid>
我稍后通过XamlWriter.Save创建TagBindingBehavior并将其添加到我的文档中。但是它有不同的名称空间。我想从TagBindingBehavior中删除“xmlns”属性。我不完全理解解释,但这可能并不重要。结果并不是你想要的
如果将as stringwriter参数与xamlwriter.save一起使用,则可以将xaml写入内存中的字符串,而不是直接写入磁盘。
这是一个字符串和xml。
您可以将其解析为xml文档并对其进行操作,也可以使用string.replace()等更改字符串。
无论哪种方式,您都可以更改任何属性或属性。我知道,我已经写入字符串而不是文件。问题是XAML不是XML。您还拥有MarkupExtensions,这是XML所不知道的。因此,如果我更改一个xmlns,可能还会影响一个MarkupExtension。请查看现有的。我认为这里的重点是,所有序列化的内容都包含在一个XAML单页中,只有一个根元素,并且除了URI之外没有外部引用。另外,请您分享一下示例,您保存的对象是什么,如何保存?中只有xaml代码question@codebender看看斯科特·汉斯曼的。您可以通过添加localName
s列表以省略,以及(前缀,localName,ns)
类型列表以添加命名空间声明来扩展(重新)可用性。