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