1
1
我已经解决了这个问题。我确实需要index属性,但不需要对ObservableCollection进行排序。我创建了一个接口IIndexedObject,它有一个属性index。我在任何需要索引的对象上实现了这个接口,在我的数据库表中,我添加了一个索引列。 当我加载到我的对象模型中时,我对索引属性中的数据库表进行排序。这样可以确保以与上次运行相同的顺序加载列表。我使用DATAGRID底部提供的空白行添加对象。它给它们一个0的索引。我使用绑定到视图模型中的ICommand的删除按钮删除对象。 我的视图模型订阅了任何包含IIndexedObjects的ObservableCollection的CollectionChanged属性。当事件激发时,视图模型将集合传递给ReindexCollection服务方法,该方法接受IIndexedObject。该方法只需迭代集合,并为每个元素的index属性分配一个增量整数值,即可根据集合的当前顺序对集合重新编制索引。当我将集合保存回数据库时,索引值将被保存,以确保下次运行时以相同的顺序加载集合。 由于只需要在数据库加载时进行排序,因此不需要对ObservableCollection进行排序。当我移动数据报上的项目时,它将负责重新排序集合。我所要做的就是对集合重新编制索引,以便将其顺序持久化回数据库。 总之,这比我想象的要容易得多。我喜欢WPF和MVVM的原因之一。 |
Kryptonit364 · 在DataGrid中隐藏调整大小和选择列 2 年前 |
hassan Ma · 从顶部将文本插入WPF文本块 2 年前 |
Arijit · 移动画布内绘制的矩形 2 年前 |
juraj14466 · C#WPF实时图表将点渲染为图像 2 年前 |