我正在查看System.Xaml命名空间的MSDN文档,特别是XamlServices类。我想知道XamlServices.Transform方法的用例是什么?
我没有反对它,我只是没有看到这个有用的情况,我想知道我错过了什么。
答案 0 :(得分:1)
Transform采用XamlReader和XamlWriter。
有两个开箱即用的作家,还有五个开箱即用的读者。当然,你可以创建自己的。
因此,Transform方法允许您将其中一个读取器和一个写入器拼接在一起,以将xaml从一个位置传输/转换/转换为另一个位置。
松散的Xaml有用的情况有两种,但对我来说最明显的两种情况是:
修改强>
这是Transform方法的代码:
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();
}
没什么特别的,但只是方便,所以你不必自己写。