是在参看了这篇文章 后 觉得不错,然后修改成用linq方法来实现的,全部代码如下
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Xml.Linq; namespace webStudy { public partial class XML2DataGird : UserControl { public XML2DataGird() { InitializeComponent(); string XMLStr = @" <NewDataSet> <Table TableName='City' TableShowName='城市' > <Column Name='CityName' ShowName='城市名称' /> <Column Name='CityTel' ShowName='城市区号' /> <Column Name='CityCounty' ShowName='城市所属国家' /> </Table> <Table TableName='User' TableShowName='用户' > <Column Name='UserName' ShowName='用户名' /> <Column Name='UserPwd' ShowName='用户密码' /> <Column Name='UserTel' ShowName='用户电话' /> <Column Name='UserEmail' ShowName='用户邮箱' /> </Table> </NewDataSet>"; XDocument doc = XDocument.Parse(XMLStr); var Element = from t in doc.Descendants("Table") select new entityTable { tableName = t.Attribute("TableName").Value,tableShowName = t.Attribute("TableShowName").Value,eColumns = from c in t.Descendants("Column") select new entityColumn { name = c.Attribute("Name").Value,showName = c.Attribute("ShowName").Value },}; foreach (var item in Element) { DataGrid dgrid = new DataGrid(); dgrid.HorizontalAlignment = HorizontalAlignment.Left; dgrid.VerticalAlignment = VerticalAlignment.Top; dgrid.Margin = new Thickness(20,5,0); dgrid.Width = 960; dgrid.Name = item.tableName; foreach (var item1 in item.eColumns) { DataGridTextColumn col = new DataGridTextColumn(); col.Header = item1.showName; dgrid.Columns.Add(col); } mainPanel.Children.Add(dgrid); } } } public class entityTable { public string tableName { get; set; } public string tableShowName { get; set; } public IEnumerable<entityColumn> eColumns { get; set; } } public class entityColumn { public string name { get; set; } public string showName { get; set; } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。