ObservableCollection があり、WPF UserControl が Databound です。Control は、ObservableCollection 内の BarData タイプの各アイテムの縦棒を示すグラフです。
ObservableCollection<BarData>
class BarData
{
public DateTime StartDate {get; set;}
public double MoneySpent {get; set;}
public double TotalMoneySpentTillThisBar {get; set;}
}
ここで、コレクション内で BarData が StartDate の昇順になるように、StartDate に基づいて ObservableCollection を整理したいと考えています。次に、各 BarData の TotalMoneySpentTillThisBar の値を次のように計算できます -
var collection = new ObservableCollection<BarData>();
//add few BarData objects to collection
collection.Sort(bar => bar.StartData); // this is ideally the kind of function I was looking for which does not exist
double total = 0.0;
collection.ToList().ForEach(bar => {
bar.TotalMoneySpentTillThisBar = total + bar.MoneySpent;
total = bar.TotalMoneySpentTillThisBar;
}
);
ICollectionView を使用してデータを並べ替え、フィルタリングして表示できることはわかっていますが、実際のコレクションは変更されません。各アイテムの TotalMoneySpentTillThisBar を計算できるように、実際のコレクションを並べ替える必要があります。その値は、コレクション内のアイテムの順序によって異なります。
ありがとう。