Frage

Wie kann ich das tun?

Versucht, einen Typeconverter verwenden, aber das einzige, was ich denken konnte, war die XML für die Typen zu konstruieren, die so gar nicht schneiden. Typeconverter in XAML-Serialisierung wird xml entkommen und es wie Klartext behandeln. Wertwandler sind nicht viel besser.

Nun, ich bin zu ISupportInitialize bewegen und wird ausgelöst, wenn Änderungen nach der Initialisierung vorgenommen werden, aber ich würde die unveränderliche Strecke gern ...


Beispiel eines Typs, möchte ich serialisiert:

public struct Foo
{
  public string Bar {get;private set;}
  public Foo(string bar) : this()
  {
    Bar = bar;
  }
}

und der Code

var foo = new Foo("lol");
var serializedFoo = XamlWriter.Save(foo);
War es hilfreich?

Lösung

Sie können leider nicht normal Serialisierung mit unveränderlichen Objekten in XAML 2006 verwenden.

Mit XAML 2009, die Konstrukteure und Factory-Methoden unterstützt, sollten Sie in der Lage sein, um Ihr Ziel zu erledige. Nur seien Sie gewarnt, 4 WPF nicht 2009 mit XAML sein

Andere Tipps

Doh! Ich falsch verstanden diese Frage völlig ...
=================================

Versuchen Sie, eine Markup-Erweiterung mit Ihrer unveränderlichen Struktur zu erstellen:

public class FooExtension : MarkupExtension
{
  public string Bar {get; set;}

  public ImgPathExtension(string bar)
  {
    this.Bar = bar;
  }

  public override object ProvideValue(IServiceProvider serviceProvider)
  {
    var foo = new Foo(this.Bar);
    return foo;
  }
}

Jetzt können Sie es in Ihrem XAML mit der Erweiterung Syntax verwenden: {ext: Foo Bar = "lol"}

Just es die gleiche Weise verwenden Sie eine andere Markupextension verwenden würden, wie Binden, Dynamic, etc.

Siehe diesen Link wenn Sie mehr brauchen Details.

HTH,

Charles

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top