문제

어떻게 할 수 있습니까?

타이프 컨버터를 사용해 보았지만 내가 생각할 수있는 유일한 것은 유형의 XML을 구성하는 것이 었습니다. XAML 직렬화의 타입 이동기는 XML을 피하고 일반 텍스트처럼 취급합니다. 가치 변환기는별로 나쁘지 않습니다.

이제, 나는 isupportinitialize로 이사하고 초기화 후에 변경이 이루어지면 던질 것입니다. 그러나 나는 불변의 경로를 좋아했을 것입니다 ...


직렬화하고 싶은 유형의 예 :

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

그리고 코드

var foo = new Foo("lol");
var serializedFoo = XamlWriter.Save(foo);
도움이 되었습니까?

해결책

죄송합니다. XAML 2006에서 불변의 물체와 함께 정상 직렬화를 사용할 수 없습니다.

생성자 및 공장 방법을 지원하는 XAML 2009를 사용하면 목표를 달성 할 수 있어야합니다. WPF 4는 XAML 2009를 사용하지 않을 것입니다.

다른 팁

도! 이 질문을 완전히 잘못 읽었습니다 ...
=================================

마크 업 확장을 사용하여 불변의 구조물을 만듭니다.

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;
  }
}

이제 Extension Syntax : {ext : foo bar = "lol"}과 함께 XAML에서 사용할 수 있습니다.

바인딩, 동적 소스 등과 같은 다른 markupextension을 사용하는 것과 같은 방식으로 사용하십시오.

보다 이 링크 자세한 내용이 필요한 경우.

HTH,

찰스

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top