【问题标题】:Serialize a UserControl to xaml, but not its children?将 UserControl 序列化为 xaml,而不是其子级?
【发布时间】: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


    【解决方案1】:

    我有一个选择是覆盖ShouldSerializeContent 并返回false。仍在寻找更好的答案,让我可以在控件之外指定它。

    【讨论】:

      猜你喜欢
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 2019-01-05
      • 1970-01-01
      相关资源
      最近更新 更多