将 UserControl 序列化为 xaml,但不序列化其子控件?

2024-03-04

.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/>

我怎样才能将此行为恢复到原始方法?


我的一个选择是覆盖应该序列化内容 http://msdn.microsoft.com/en-us/library/system.windows.controls.contentcontrol.shouldserializecontent.aspx并返回false。仍在寻找更好的答案,以便我可以在控制之外指定这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 UserControl 序列化为 xaml,但不序列化其子控件? 的相关文章

随机推荐