我有一个DataGrid(目前是.NET 3.5 WPFToolkit版本,但我可以使用.NET 4.0开箱即用的DataGrid,如果需要)绑定到一组对象。数据网格中的三列表示用作从数据库中获取其他信息的键的信息。此计算中使用此其他信息来填充数据网格的其他列。
一旦用户输入这三个字段,并且数据库中存在这些字段中的数据组合,则该行被认为对添加到集合有效。现在还允许用户自由编辑行中的其他列。一旦用户给任何其他列提供数据,则三个“密钥”字段被视为“锁定” - 用户可能不再编辑它们。更改该信息的唯一方法是删除整行并添加新行。
1)从用户体验的角度来看,处理这个问题的最佳方法是什么?我应该允许用户在任何列中输入数据,“缓存”他们的条目,然后只在输入“密钥”数据后立即进行计算?或者我应该限制用户只输入“密钥”数据,然后允许用户在其他列中输入数据?
2)在数据网格中实现上述目标的策略(我需要的事件处理程序等)是什么?如何将新行添加到数据绑定集合中,直到它具有有效的“密钥”数据,或者我是否允许添加新行以验证错误并以某种方式跟踪用户可以继续编辑部分完成的行的“关键”列,但不编辑数据网格中的其他现有行?
答案 0 :(得分:0)
这就是我针对特定情况所做的事情:
1)处理此问题的最佳方法是尽可能为用户提供最大的灵活性。这意味着允许用户在特定条件下编辑密钥数据,但不限制用户首先输入密钥数据。
2)实施策略分为两部分。首先,定义何时不允许使用编辑关键数据,并将样式添加到datagrid列,以便根据触发器将键值列切换为只读模式。其次,当关键数据发生变化时,执行幕后的所有逻辑,就像使用旧密钥数据删除行,然后使用新密钥数据创建一样。这将涵盖我需要发生的所有副作用。