你什么时候使用XamlServices.Transform()?

时间:2010-12-12 19:25:31

标签: .net xaml

我正在查看System.Xaml命名空间的MSDN文档,特别是XamlServices类。我想知道XamlServices.Transform方法的用例是什么?

我没有反对它,我只是没有看到这个有用的情况,我想知道我错过了什么。

1 个答案:

答案 0 :(得分:1)

Transform采用XamlReader和XamlWriter。

有两个开箱即用的作家,还有五个开箱即用的读者。当然,你可以创建自己的。

因此,Transform方法允许您将其中一个读取器和一个写入器拼接在一起,以将xaml从一个位置传输/转换/转换为另一个位置。

松散的Xaml有用的情况有两种,但对我来说最明显的两种情况是:

  1. 工作流程定义和
  2. UI的设计时/运行时生成器
  3. 修改

    这是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();
    }
    

    没什么特别的,但只是方便,所以你不必自己写。