指针与C#WPF中的深层副本

时间:2014-07-24 00:46:37

标签: c# wpfdatagrid

我正在填充一个我在WPF数据网格中显示的列表,但是,当我将o对象添加到列表中时,我只得到一个指针。当我在datagrid中显示时,所有行都相同并且等于btcusdDepth.Asks中的列表记录。如何确保记录是数据的深层副本?

var o = new OrderDataObject();
var bidMktOrders = new List<OrderDataObject>();
var askMktOrders = new List<OrderDataObject>();

foreach (var quote in btcusdDepth.Asks)
{
  o.orderAmt = quote.Amount.ToString();
  o.orderPrice = quote.Price.ToString();
  askMktOrders.Add(o);
}
mktDepth.ItemsSource = askMktOrders;

1 个答案:

答案 0 :(得分:0)

每次调用new时都会存在一个对象,因此您只需要一个OrderDataObject,只需将值更新为。

请改为:

var bidMktOrders = new List<OrderDataObject>();
var askMktOrders = new List<OrderDataObject>();

foreach (var quote in btcusdDepth.Asks)
{
    var o = new OrderDataObject();
    o.orderAmt = quote.Amount.ToString();
    o.orderPrice = quote.Price.ToString();
    askMktOrders.Add(o);
}
mktDepth.ItemsSource = askMktOrders;