【问题标题】:What Linq to XML do I need to bind XML to Silverlight Datagrid我需要什么 Linq to XML 才能将 XML 绑定到 Silverlight Datagrid
【发布时间】:2011-05-01 23:58:21
【问题描述】:

我正在查看 this 问题,它给了我大约 80% 的需求。对我来说,“问题”是我的 XML 结构不同,我不太确定如何使用 Linq 来满足我的需要。

我的 XML 看起来像这样(顺便说一下,它是由 ConvertTo-XMl PowerShell Cmdlet 生成的)

<?xml version="1.0"?>
<Objects>
  <Object>
    <Property Name="Name">CompiledCode.ps1</Property>
    <Property Name="LastWriteTime">5/21/2009 6:59:16 PM</Property>
  </Object>
  <Object>
    <Property Name="Name">ComputerDrawing.ps1</Property>
    <Property Name="LastWriteTime">1/13/2010 7:52:44 AM</Property>
  </Object>
</Objects>

我正在尝试绑定到 Silverlight DataGrid,以便列名称为“Name”和“LastWriteTime”,并且行将具有属性标记中的值。对于第一个,名称为 Compiled Code.ps1,LastWriteTime 为“5/21/2009 6:59:16 PM”

上述问题的答案有这个方法

private Status GetStatus(XElement el)
        {
            Status s = new Status();
            s.Description = el.Attribute("Description").Value;
            s.Date = DateTime.Parse(el.Attribute("Date").Value);
            return s;
        }

我创建了我自己的名为 Scripts 的类,它有一个名称和一个日期,但我试图弄清楚我需要哪些元素或属性来填充我的数据网格。

【问题讨论】:

    标签: silverlight data-binding datagrid linq-to-xml


    【解决方案1】:

    这是您需要的基本要点:-

    private Scripts GetScripts(XElement el)
    {
        Scripts s = new Scripts()
    
        s.Name = (string)el.Elements("Property")
            .Where(e => (string)e.Attribute("Name") == "Name")
            .FirstOrDefault();
    
        string lastWriteTime = (string)el.Elements("Property")
            .Where(e => (string)e.Attribute("Name") == "LastWriteTime")
            .FirstOrDefault();
    
        s.LastWriteTime = DateTime.ParseExact(lastWriteTime, "M/d/yyyy h:m:s tt", CultureInfo.InvariantCulture);
     }
    

    您可能希望 LastWriteTime 成为 DateTime,因此您可能希望将 is 放在中间字符串中并使用精确解析。

    【讨论】:

      猜你喜欢
      • 2011-11-15
      • 2012-07-16
      • 1970-01-01
      • 2012-04-20
      • 2011-03-14
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多