xml - XamlWriter.Save(object) - 设置根和其他命名空间
问题描述
我正在通过XamlWriter.Save(object)
. 这按预期工作。
现在的问题是,XamlWriter
根据需要设置命名空间,例如根命名空间xmlns
设置为 my 的命名空间object
。
问题是,我想将 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”属性。
解决方案
我没有完全遵循解释,但也许这并不重要。结果不是你想要的。
如果将 xamlwriter.save 用作 stringwriter 参数,则可以将 xaml 写入内存中的字符串,而不是直接写入磁盘。这既是字符串又是 xml。您可以将其解析为 xml 文档并对其进行操作,或者您可以使用 string.replace() 等更改字符串。无论哪种方式,您都可以更改您喜欢的任何属性或属性。
推荐阅读
- javascript - 如何在节点 js 中获取用户输入?
- c - 在共享库/DLL 中仅存储或检查一次 getenv() 的值
- javascript - 查找并创建一个仅具有一种值的新数组并消除重复项(如果有很多)
- ruby-on-rails - Rails has_many 根据最新 created_at 记录对列进行排序
- r - 过滤掉 R 中只有一种类型值的组
- python - 如何创建分配问题成本矩阵
- wordpress - Nginx 301 在本地访问代理域时
- ios - 在快速布局冲突中创建自定义按钮
- reactjs - 如何在 Stepper - Material UI 中实现条件渲染?React.Js 步骤进度条
- c# - C# 编译器为哪些集合类型生成集合类?