我的设置:
C#.Net 4.0、Windows Forms、DevExpress 13.1.5 虽然我怀疑它是 DX 问题
我有一个顶部带有 GridControl(带有 GridView)的表单和一个在下面的 LayoutControl 中保存 TextEdits 和其他编辑的详细信息区域。网格和下面的编辑都绑定到绑定源列表中包含的对象的属性。网格设置为 ReadOnly、MultiSelect、RowSelect,其所有列都设置为 ReadOnly,不可聚焦。编辑只发生在下面的详细信息区域。
我要创建的行为:
在网格中选择多行时,下面的编辑应显示以下内容:
- 所有选定行中相关字段的值都相同 -> 显示该值
- 有问题的字段的值在行之间有所不同->什么也不显示
如果用户在选择多行时写入 TextEdit:
- 编辑的值应该更新所有选定行的同一字段的值
我在哪里:
我正在通过构建一个可以知道选择的自定义 BindingSource 来制定解决方案。它将对象列表绑定到网格,并将不属于列表的单个对象绑定到编辑。根据选择,我将设置该单个对象的属性或将其更改转发到列表中的选定对象。
我将它用于具有 2 个绑定源的单个属性,现在将其扩展为使用反射来为所有公共属性执行此操作。我还想将整个行为封装到一个看起来和行为类似于 BindingSource 的类中,只是添加了该行为。
问题:
有没有更简单的方法来实现这一点?我在 .Net 或 DevExpress 中忽略的东西是否已经存在?我的方法中是否存在我应该考虑的陷阱,或者为什么我应该采取完全不同的方式?