如何将计算列添加到数据绑定列表视图?

时间:2010-02-12 22:04:52

标签: c# .net listview wpf-controls

我有一个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绑定到theBank.Transactions,一个ObservableCollection。

...但我对如何做到这一点有点困惑。有任何想法吗?

提前谢谢!

1 个答案:

答案 0 :(得分:2)

您的上一列可以像其他列一样绑定。你只需要在后面的代码中进行计算。

我会将最后一列“Balance”绑定到依赖项,该依赖项是根据Transactions的CollectionChanged事件计算的。这样,无论何时进行交易,都会触发重新计算您的依赖关系余额的事件。

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

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