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