04-12-2010, 04:17 PM
As stated, not that robust - could probably be optimized a tad
I've condensed it a bit for this post
I've condensed it a bit for this post
Code:
using System.IO;
using System.Linq;
using System.Xml.Linq;
namespace ConvertWpfToSL
{
class Program
{
static void Main(string[] args)
{
var testFile = File.OpenText(args[0]);
var oldXmlSnippet = testFile.ReadToEnd();
var newXmlSnippet = WpfXaml.Convert(oldXmlSnippet).ToString();
}
}
public class WpfXaml
{
const string CCanvas = "Canvas";
const string CMatrix = "Matrix";
const string CRenderTransform = "RenderTransform";
const string CMatrixTransform = "MatrixTransform";
const string CCanvasRenderTransform = CCanvas + "." + CRenderTransform;
public static XElement Convert(string xmlSnippet)
{
var doc = XDocument.Parse(xmlSnippet);
var root = doc.Elements().ElementAt(0);
return Convert(root);
}
private static XElement Convert(XElement el)
{
var canvasElements = el.Elements(el.Name.Namespace + CCanvas);
var attr = el.Attribute(CRenderTransform);
if (attr != null)
{
var newCanvasElement = new XElement(CCanvasRenderTransform);
var newMatrixTransform = new XElement(CMatrixTransform);
newMatrixTransform.SetAttributeValue(CMatrix, attr.Value);
newCanvasElement.Add(newMatrixTransform);
el.AddFirst(newCanvasElement);
attr.Remove();
}
foreach (var elem in canvasElements)
Convert(elem);
return el;
}
}
}
