如何可视化XAML

时间:2012-12-13 13:25:57

标签: c# wpf xaml viewer

我的任务是写下一个简单的查看器,它将显示.xaml文件在视觉上的样子(就像VS编辑器一样,但没有编辑功能)。你能给我任何能帮助我的参考资料吗?

4 个答案:

答案 0 :(得分:2)

您可以使用XamlReader.Load方法

如果您只想要查看者,而不是设计师,则可以调用XamlReader.Load方法,并将结果分配给ContentControl.Content

StringReader stringReader = new StringReader(strXaml);
XmlReader xmlReader = XmlReader.Create(stringReader);
myContentControl.Content = (Button)XamlReader.Load(xmlReader);

修改 此代码从xaml加载窗口并显示它

string strXaml = "<Window xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" Title=\"MainWindow\" Height=\"350\" Width=\"525\">" +
        "<Grid> <Button Content=\"Button123\" Height=\"23\" HorizontalAlignment=\"Left\" Margin=\"174,41,0,0\" Name=\"button1\" VerticalAlignment=\"Top\" Width=\"75\" />"+
        "</Grid></Window>";

StringReader stringReader = new StringReader(strXaml);

XmlReader xmlReader = XmlReader.Create(stringReader);
Window obj = (Window)XamlReader.Load(xmlReader);

obj.Show();

如果你确定根元素是allways Window,你可以跳过它。这样的事情对我有用

StringReader stringReader = new StringReader(strXaml);
var xDoc = XDocument.Load(stringReader).Document.Descendants().First().DescendantNodes().First();

XmlReader xmlReader = xDoc.CreateReader();
uc.Content = XamlReader.Load(xmlReader);

最好在跳过它之前检查Window是否存在

答案 1 :(得分:2)

假设,这会有所帮助:Kaxaml编辑器 [link] - 带有可视化工具的xaml编辑器,在MIT许可下开源并发布。

答案 2 :(得分:2)

您应首先查看XamlServices类及其Parse方法。

答案 3 :(得分:0)

KAXAML就是这样做的,它是githubcodeplex上的开源,我会看那里。

特别是,this是执行显示的XAML文件