0

我正在从 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#。

提前致谢。

4

1 回答 1

0

将 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}">
于 2013-06-25T17:55:39.803 回答