0

我实现了一个自定义的 PropertySheet,如此所述。

所以我有一个主视图,它实现了 selectionprovider,它可以在我的自定义 PropertySheet 视图中显示属性。

我现在的问题是,如果属性视图中有未保存的更改,我想在属性视图中编辑选择的某些属性并防止更改主视图中的选择。

解决该问题的最佳方法是什么?

如果我在自定义属性视图中实现 ISaveablePart,我可以将其标记为脏。如果我的属性视图很脏,如何防止更改选择?

提前致谢!

4

1 回答 1

1

由于视图是非模态(例如非阻塞)UI 组件,因此没有真正的方法可以防止视图外的选择更改。因此,Properties 视图的预期工作方式是尽快保存。

默认的,基于 TreeViewer 的 EMF 模型实现使用 CellEditor 来更改其值;当 CellEditor 中的值发生更改时,更改的值会自动写回原始模型,以避免您提到的数据丢失情况。

换句话说,您必须依靠您的数据源(例如提供选择的编辑器)来存储永久更改,并且可以通过该源(编辑器)对更改进行序列化。

于 2016-06-21T12:09:33.620 回答