【发布时间】:2011-06-25 18:27:48
【问题描述】:
在 .NET 4.0 中对 XAML 序列化堆栈进行了很多更改。其中一项变化是,当您序列化 UserControl 时,您不仅可以获得控件本身,还可以获得其所有子控件。
var sb = new StringBuilder();
var writer = XmlWriter.Create(sb, new XmlWriterSettings
{
Indent = true,
ConformanceLevel = ConformanceLevel.Fragment,
OmitXmlDeclaration = true
});
var mgr = new XamlDesignerSerializationManager(writer);
mgr.XamlWriterMode = XamlWriterMode.Expression;
System.Windows.Markup.XamlWriter.Save(this, mgr);
return sb.ToString();
而不是得到,例如,
<MyUserControl
xmlns="clr-namespace:MyNamespace"
SomeProperty="Add ten thousand child controls" />
你现在得到
<MyUserControl
xmlns="clr-namespace:MyNamespace"
SomeProperty="Add ten thousand child controls">
<StackPanel xmlns="http://microsoft.com/something/xaml/dude">
<TextBlock Text="Child Control ONE!"/>
<TextBlock Text="Child Control TWO!"/>
<TextBlock Text="Child Control THREE!"/>
<!--WTMFH?-->
<TextBlock Text="Child Control TEN FRIGGEN THOUSAND!"/>
</StackPanel>
</MyUserControl/>
如何将此行为恢复为原始方法?
【问题讨论】:
标签: c# wpf serialization user-controls