如何设计具有以下要求的应用程序。因为我是WPF的菜鸟,我正在研究一种方法。[写起来就够了]
具有以下要求的 WPF 应用程序。
-
将作为 WPF 网格视图中的第一行的行。
-
该行将位于网格列标题下方和数据行上方,并且 位于网格本身内。
-
当第一行中的任何单元格接收数据时,该数据将填充到 网格中同一单元格的列
单元格在 列中向下更新后,单元格内容 [在第一个 行]被清除
处理排序、过滤、分页、列重新排序、列大小调整等
- 允许自定义单元格模板和编辑单元格模板
条件:
将来应用于其他网格
无代码隐藏
坚持良好的OOPs,WPF设计原则,可测试,可在内部实现 一个 MVVM 框架。
我能想到的最简单方法是使用每列的标题模板。
我建议这样做是因为它适合数据网格的工作方式。它已经是单独的行,您可以绑定到不同的对象等等。
您将定义这一点。
这看起来像下面的标记(这只是空气代码)。
<DataGridTextColumn …..
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="Some Header Text"/>
<TextBox Text="{Binding SomeDefaultForThisColumn}"
将文本框绑定到另一个对象会有点繁琐,因为列是抽象的,不在可视化树中。不过,如果您使用谷歌搜索,您将能够找到有关绑定的问题。
当用户单击要添加的数据网格中的最后一行时,将使用类型绑定的构造函数。因此,我的建议是注入包含标题编辑数据或某种工厂方法设置属性的对象。
当然,您可能希望能够关闭行视图模型的任何属性的设置,以便在更新现有属性时这不是问题。