Как добавить вычисляемый столбец в связанный список данных? - PullRequest
2 голосов
/ 13 февраля 2010

У меня есть WPF ListView с несколькими столбцами, привязанными к пользовательской коллекции. Вопрос в том, как добавить еще один столбец, который рассчитывается, а не связан. В частности, это то, что у меня есть, которое отображает нормально:

            <ListView Name="ui_rptTransactions">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="Date" 
                                        DisplayMemberBinding="{Binding Path=Date}" />
                        <GridViewColumn Header="Category" 
                                        DisplayMemberBinding="{Binding Path=Category.Name}" />
                        <GridViewColumn Header="Amount" 
                                        DisplayMemberBinding="{Binding Path=Amount}" />
                    </GridView>
                </ListView.View>
            </ListView>

В следующем столбце я хотел бы получить «Баланс», который рассчитывается как «Последнее подтвержденное вручную сальдо» минус «сумма всех предыдущих сумм транзакций» Первая часть этого доступна через публичное свойство theBank.LastActualBalance.Amount. (Приведенный выше ListView привязан к коллекции Bank.Transactions, ObservableCollection.

... но я немного застрял в том, как это сделать. Есть идеи?

Спасибо заранее!

1 Ответ

2 голосов
/ 13 февраля 2010

Ваш последний столбец может быть привязкой, как и остальные столбцы. Вы просто должны сделать расчет в коде позади.

Я бы привязал последний столбец «Баланс» к зависимости, которая рассчитывается на основе события CollectionChanged транзакций. Таким образом, всякий раз, когда совершается Транзакция, запускается событие, которое пересчитывает ваш Баланс Зависимостей.

oCollection.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(oCollection_CollectionChanged);

private void oCollection_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
    CalculatedBalance();
}
...