我的任务是写下一个简单的查看器,它可以显示 .xaml 文件的外观(就像 VS 编辑器一样,但没有编辑功能)。你能给我一些对我有帮助的参考吗?
问问题
3762 次
4 回答
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();
如果您确定根元素始终是 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 是否存在
于 2012-12-13T13:31:29.673 回答
2
假设这会有所帮助: Kaxaml 编辑器[链接] - 带有可视化工具的 xaml 编辑器,开源并在 MIT 许可下发布。
于 2012-12-13T13:31:45.570 回答
2
您应该从查看XamlServices
类及其Parse
方法开始。
于 2012-12-13T13:32:38.677 回答
0
KAXAML 就是这样做的,它在github和codeplex上是开源的,我会去那里看看。
特别是,这是执行显示的 XAML 文件
于 2012-12-13T13:32:38.237 回答