我正在使用WPF构建一个现金管理软件用于学习目的,我在设置现金账户时遇到了一些麻烦,这样我就可以在每次交易后看到余额。
以下是我现在所拥有的摘要版本:
帐户类:
public class Account {
public long Id { get; set; }
public string Name { get; set; }
public decimal StartingBalance { get; set; }
}
类别类:
public class Category {
public long Id { get; set; }
public string Name { get; set; }
}
交易类:
public class Transaction {
public long Id { get; set; }
public DateTime Date { get; set; }
public Account Account { get; set; }
public Category Category { get; set; }
public string Description { get; set; }
public decimal TransactionValue { get; set; }
}
我想要实现的是,仅使用WPF绑定功能,填充数据网格并查看给定日期间隔和帐户的以下数据:
Date Account Category Description Value Balance
02/02/10 A1 C1 D1 22.30 230.00
02/03/10 A1 C1 D2 -30.00 200.00
我希望能够选择“所有帐户”选项,并在余额栏中查看所有帐户余额的总和。
到目前为止,代码工作正常,但我没有数据网格中的Balance字段,也没有看到一个优雅的方式来模拟这个,我需要你的帮助guyz!
非常感谢你的帮助。
答案 0 :(得分:3)
当我这样做时,我倾向于简单地使用交易和期刊(期刊是交易的集合)。您有期刊,以便您可以撤销一组交易。
我的交易表往往是这样的:
然后你基本上有一个非常灵活的系统。每个操作都可以反转,CR / DR意味着方向,您可以通过拥有不同的帐户和帐户类型来管理所有资金。您可以根据帐户缓存帐户的当前值,如果需要,可以从日记帐中重新计算。
- 编辑:
就运行平衡而言,如果不清楚,我会在账户表中有一个字段,例如“CurrentBalance”,并通过触发器(或通过常见的代码内,可能排队)情况进行调整,取决于各种其他因素。关键是你在“交易”事件上更新它,你不会每次都计算它。
答案 1 :(得分:1)
运行余额是您的关键问题。它不属于任何地方的模型。您需要的是一个名为 ViewModel 。搜索WPF实现中常见的 MVVM 或 Model-View-ViewModel 模式。
基本上,您需要创建一个专门的Transaction
类(可能称为RegisterTransaction
),其中包含每个事务的运行余额字段。您需要为每笔交易计算它。从那里,使用WPF绑定到您的RegisterTransaction
对象。