C# 将标记扩展速记语法转换为完整的Xml格式
我有如下XAML字符串:C# 将标记扩展速记语法转换为完整的Xml格式,c#,wpf,xaml,markup-extensions,C#,Wpf,Xaml,Markup Extensions,我有如下XAML字符串: <Button Content={Binding Name} Style={StaticResource ButtonStyle}/> 如何将所有大括号转换为代码中的元素,如: <Button> <Button.Content> <Binding Path="Name"> </Button.Content> <Button.Sty
<Button Content={Binding Name} Style={StaticResource ButtonStyle}/>
如何将所有大括号转换为代码中的元素,如:
<Button>
<Button.Content>
<Binding Path="Name">
</Button.Content>
<Button.Style>
<StaticResource ResourceKey="ButtonStyle"/>
</Button.Style>
</Button>
您可以使用
XamlReader
和XamlWriter
,我认为默认情况下(!)不会保存速记类型。看
其中包括一个例子
// Create the Button.
Button originalButton = new Button();
originalButton.Height = 50;
originalButton.Width = 100;
originalButton.Background = Brushes.AliceBlue;
originalButton.Content = "Click Me";
// Save the Button to a string.
string savedButton = XamlWriter.Save(originalButton);
// Load the button
StringReader stringReader = new StringReader(savedButton);
XmlReader xmlReader = XmlReader.Create(stringReader);
Button readerLoadButton = (Button)XamlReader.Load(xmlReader);
上面保存的按钮看起来像
<Button Background="#FFF0F8FF" Width="100" Height="50" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">Click Me</Button>
点击我
如果您已经解释了您想要实现的目标,那么这会有所帮助,因此我们知道您为什么要进行转换。我认为这是一个有趣的话题,但您能否展示您迄今为止为解决问题所做的努力?Microsoft对标记扩展语法进行了很好的定义,因此您特别关注的是什么?顺便说一下,您的示例说明了所需的转换,但它包含一些语法错误。我需要创建解析器,读取从Zam3D生成的资源字典,并更改xaml文件(更改结构)以将其打开(作为xml)在我的节目里。将xml序列化为本机对象(不是控件或UIElements)的程序我需要一种方法来将数据读取为XmlElement或XElement,但我无法正确读取大括号之间的数据。这是到目前为止这个问题的唯一真正答案。