【问题标题】:grid for data entry数据输入网格
【发布时间】:2023-03-10 19:01:01
【问题描述】:
作为 WPF 演示的一部分,我需要一个类似于下面模型的控件来让用户:
- 输入可变数量的百分比,最高可达 100%
- 知道所有条目的总数是多少
- 知道余额是多少(100% - TotalEntered)
虽然这显然是一个非常普通的要求,但我不知道如何实现它。这是一次性的要求,所以它不必是可重用的,尽管如果可以的话会很好。允许分离和可测试性的模式(即,MVVM)也很好。
我认为现有的 DataGrid 控件是合适的工具,但也许它是矫枉过正的。有人可以建议一些开始的实现代码或链接吗?
干杯,
浆果
【问题讨论】:
标签:
wpf
xaml
mvvm
datagrid
wpf-controls
【解决方案1】:
VM = "ViewModel" 实现 INotifyPropertyChanged。
创建一个Shares VM 和一个Share VM(为简洁起见删除了实现)。
SharesViewModel
{
double TotalPercent
double RemainingPercent
ObservableCollection<ShareViewModel> Shares
// foreach Share in Shares
// handle PropertyChanged on ActualPercent to update TotalPercent
}
ShareViewModel
{
int Line
string Percent // on set, parse/validate and set ActualPercent
double ActualPercent
}
使用此article 了解如何保持Line 序列有序。
将DataGrid ItemsSource 绑定到SharesViewModel Shares 属性。
(确保验证百分比输入。IDataErrorInfo 可能会有所帮助。)