【发布时间】:2014-01-31 09:48:58
【问题描述】:
我对 ObservableCollection 有一些问题。
基本上问题是,我需要更改很多属性取决于更改的内容。
例如:
您可以在下面看到 ProductCount 方法,该方法更改了在 ListView 上选择的产品的计数(数量)(ListView 具有 ObservableCollection 绑定)。
因此,当我更改 ProductCount 时,我还需要更改 DiscountPrice(当产品有折扣时)、ProductPrice(即 Count * Price)、DiscountValue(例如,如果商品有 50% 的折扣,则重新计算), ReceiptSum(这是所有 ProducPrice * ProductCount 的总和),如果商品被送到厨房,则为背景。
public decimal ProductCount
{
get
{
//get count from database
return _productCount;
}
set
{
_productCount = value;
//update count in database
NotifyPropertyChanged("ProductCount");
NotifyPropertyChanged("DiscountPrice");
NotifyPropertyChanged("ProductPrice");
NotifyPropertyChanged("DiscountValue");
NotifyPropertyChanged("TotalValue");
NotifyPropertyChanged("ReceiptSum);
NotifyPropertyChanged("SentToKichen");
}
}
好吧,一切似乎都很安静,但是。问题是,这需要很多时间来改变一切。例如,在我的 8 核 PC、16GB RAM 上,更改某个值需要 4 秒。此时应用程序被冻结, 这是我想解决的问题。
也许您知道如何更改我的源代码以更快地重新计算所有值?
提前致谢!
【问题讨论】:
-
更改该值并标记这些属性可能不会导致您的问题。你同时还在做什么?
-
不确定,但问题可能是,当我更新数据库时,我获取的是 ProductID(类),而不是 _productID(私有值)。所以也许这是问题?我在每次获取时都添加了 Console.Writeline,并且只需将产品添加到列表视图,我就会收到 176 条消息。
-
我的猜测是您的数据访问是瓶颈。尝试定时查询/更新
标签: c# wpf class observablecollection inotifypropertychanged