Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将标记扩展速记语法转换为完整的Xml格式_C#_Wpf_Xaml_Markup Extensions - Fatal编程技术网

C# 将标记扩展速记语法转换为完整的Xml格式

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

我有如下XAML字符串:

    <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,但我无法正确读取大括号之间的数据。这是到目前为止这个问题的唯一真正答案。