Transform은 XamlReader 및 XamlWriter를 사용합니다.
두 가지 기본 작성기가 있으며 5 가지 기본 제공 판독기가 있습니다. 물론 당신 자신을 만들 수 있습니다.
변환 방법을 사용하면 판독기 중 하나와 작성기 중 하나를 스티치하여 xaml을 한 위치에서 다른 위치로 전송/변환/변형 할 수 있습니다. UI의
- 워크 플로 정의 및
- 디자인 타임/런타임 발전기
: 느슨한 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();
}
아무 것도 없지만 편리하기 때문에 혼자 쓰지 않아도됩니다.
이번에 감사합니다. 그러나 별도의 변환 대리자가 없기 때문에 사용자가 원하는대로 변환 한 사용자 지정 XamlReader/XamlWriter 구현을 작성해야합니다. 나는 Rob Relyea가 몇 년 전에 쓴 "XamlWriter"의 성능 대체품 이외에 다른 모든 것을 돌리는 것을 기억하지 않습니다. XamlWriter에 XamlReader를 제공하는 경우 메서드가 얼마나 복잡 할 수 있습니까? 프레임 워크에 추가해야하는 이유는 무엇입니까? –
나는이 방법에 약간의 버퍼링을 넣었 으면 좋겠다. 알아 내기 위해 dotpeek를 사용 하겠지만 아무것도 기대하지 않습니다. –
A는 참조 용 Transform 메서드의 소스를 추가했습니다. –