2010-12-12 4 views

답변

1

Transform은 XamlReader 및 XamlWriter를 사용합니다.

두 가지 기본 작성기가 있으며 5 가지 기본 제공 판독기가 있습니다. 물론 당신 자신을 만들 수 있습니다.

변환 방법을 사용하면 판독기 중 하나와 작성기 중 하나를 스티치하여 xaml을 한 위치에서 다른 위치로 전송/변환/변형 할 수 있습니다. UI의

  1. 워크 플로 정의 및
  2. 디자인 타임/런타임 발전기
: 느슨한 XAML은 나에게 가장 눈에 띄는 두 가지 유용하지만 때

시나리오의 몇 가지가 있습니다

EDIT

이것은 변환 방법의 코드이다

,
public static void Transform(XamlReader xamlReader, XamlWriter xamlWriter, bool closeWriter) 
{ 
    if (xamlReader == null) 
     throw new ArgumentNullException("xamlReader"); 
    if (xamlWriter == null) 
     throw new ArgumentNullException("xamlWriter"); 
    IXamlLineInfo xamlLineInfo = xamlReader as IXamlLineInfo; 
    IXamlLineInfoConsumer lineInfoConsumer = xamlWriter as IXamlLineInfoConsumer; 
    bool flag = false; 
    if (xamlLineInfo != null && xamlLineInfo.HasLineInfo && (lineInfoConsumer != null && lineInfoConsumer.ShouldProvideLineInfo)) 
     flag = true; 
    while (xamlReader.Read()) 
    { 
     if (flag && xamlLineInfo.LineNumber != 0) 
      lineInfoConsumer.SetLineInfo(xamlLineInfo.LineNumber,xamlLineInfo.LinePosition); 
     xamlWriter.WriteNode(xamlReader); 
    } 

    if (!closeWriter) 
     return; 
    xamlWriter.Close(); 
} 

아무 것도 없지만 편리하기 때문에 혼자 쓰지 않아도됩니다.

+0

이번에 감사합니다. 그러나 별도의 변환 대리자가 없기 때문에 사용자가 원하는대로 변환 한 사용자 지정 XamlReader/XamlWriter 구현을 작성해야합니다. 나는 Rob Relyea가 몇 년 전에 쓴 "XamlWriter"의 성능 대체품 이외에 다른 모든 것을 돌리는 것을 기억하지 않습니다. XamlWriter에 XamlReader를 제공하는 경우 메서드가 얼마나 복잡 할 수 있습니까? 프레임 워크에 추가해야하는 이유는 무엇입니까? –

+0

나는이 방법에 약간의 버퍼링을 넣었 으면 좋겠다. 알아 내기 위해 dotpeek를 사용 하겠지만 아무것도 기대하지 않습니다. –

+0

A는 참조 용 Transform 메서드의 소스를 추가했습니다. –

관련 문제