I am populating a list which I am displaying in a WPF datagrid, however, when I add the o
object to the list I am only getting a pointer. When I go to display in the datagrid all of the rows are identical and equal to the list record in btcusdDepth.Asks
. How can I ensure that record is a deep copy of the data?
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;
A single object exists for each time new
is invoked, so you only have one OrderDataObject
that you're simply updating the values to.
Do this instead:
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;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.