.net 何时使用XamlServices.Transform()?
我正在查看System.Xaml命名空间的MSDN文档,特别是XamlServices类。我想知道该方法的用例是什么.net 何时使用XamlServices.Transform()?,.net,xaml,.net,Xaml,我正在查看System.Xaml命名空间的MSDN文档,特别是XamlServices类。我想知道该方法的用例是什么 我没有什么反对的,我只是不认为这样做有用,我想知道我缺少了什么。转换需要一个XamlReader和一个XamlWriter 有两位开箱即用的作家和五位开箱即用的读者。当然,你可以创建自己的 因此,Transform方法允许您将一个读卡器和一个写卡器缝合在一起,以将xaml从一个地方传输/翻译/转换到另一个地方 松散Xaml很有用,但对我来说,最明显的两种情况是: 工作流定义和 U
我没有什么反对的,我只是不认为这样做有用,我想知道我缺少了什么。转换需要一个XamlReader和一个XamlWriter 有两位开箱即用的作家和五位开箱即用的读者。当然,你可以创建自己的 因此,Transform方法允许您将一个读卡器和一个写卡器缝合在一起,以将xaml从一个地方传输/翻译/转换到另一个地方 松散Xaml很有用,但对我来说,最明显的两种情况是:
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性能替换,它没有“改变”任何东西)。如果只是将XamlReader提供给XamlWriter,那么该方法会有多复杂?为什么要费心把它添加到框架中呢?我想,希望他们在方法中加入一些智能缓冲。我将使用dotpeek查找,但我不希望fancyA添加任何内容作为转换方法的源代码以供参考