用于数据输入的网格

时间:2012-02-15 16:27:42

标签: wpf xaml mvvm datagrid wpf-controls

作为WPF演示文稿的一部分,我需要像下面的模拟一样的控件来让用户:

  1. 输入可变数量的百分比,最高可达100%
  2. 知道所有条目的总数
  3. 知道余额是多少(100% - TotalEntered)
  4. 虽然这显然是一个非常行人的要求,但我对如何实施它感到茫然。这是一次性要求,所以它不需要是可重复使用的,尽管如果它可能会很好。允许分离和可测试性(即MVVM)的模式也很棒。

    我认为现有的DataGrid控件是正确的工具,但也许它太过分了。有人可以建议一些启动实现代码或链接到同一个吗?

    干杯,
    Berryl

    mock up

1 个答案:

答案 0 :(得分: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可能会有所帮助。)