【问题标题】:Load XML held in a string to a Data Grid将保存在字符串中的 XML 加载到数据网格
【发布时间】:2013-06-22 12:55:55
【问题描述】:

我正在从 Web 服务中提取 XML。我已经使用

将返回的数据加载到字符串中
HttpWebResponse resp = req.GetResponse() as HttpWebResponse;
Encoding enc = System.Text.Encoding.GetEncoding(1252);
StreamReader loResponseStream =
new StreamReader(resp.GetResponseStream(), enc);
string Response = loResponseStream.ReadToEnd();

将其放入名为 AccountList 的 DataGrid 的最佳方法是什么?此 DG 位于 WPF 表单上。

我正在使用 Visual Studio Express 2012 for Desktop 和 c#。

提前致谢。

【问题讨论】:

  • 您有什么特别的问题吗?你在使用 DataBindings 吗?
  • 我尝试设置数据源,但无法访问。我只看到数据上下文

标签: c# xml datagrid


【解决方案1】:

将 XML 解析为一个列表,然后绑定到它。 举个例子,假设你的 XML 是这样的(我知道这是一个简单的例子,如果你有一个复杂的 xml 结构,你需要做更多的工作来反序列化它(构建支持类,所以你可以添加进入列表):

<Items>
   <Item>a</Item>
   <Item>b</Item>
   <Item>c</Item>
</Items>

假设您有一个绑定到的属性:

//could be of some <T> but for simplicity..
ObservableCollection<string> MyItems {get;set;}

解析 XML 并将其签名到您的属性,让绑定完成其余的工作:

var xDoc = XDocument.Parse(Response);
var list = doc.Root.Elements("Item").Select(element => element.Value).ToList();

MyItems.Clear();
foreach(var item in list)
    MyItems.Add(item);

好吧,您在XAML 中的绑定应该是:

<DataGrid ItemsSource="{Binding MyItems}">

【讨论】:

  • 谢谢丹尼斯。这是一个很大的帮助
猜你喜欢
  • 2012-09-22
  • 1970-01-01
  • 2013-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
相关资源
最近更新 更多