我正在尝试为 ControlsFX 的 GridView 实现 MultipleSelectionModel。研究互联网时,Jonathan Giles 提到向每个 GridCell 添加侦听器是个坏主意。这让我想知道如何通知选择模型,例如选择、取消选择等。在阅读之前,我认为 GridCell 中使用的节点将消耗鼠标/触摸/键事件并相应地使用 GridCells 的updateSelected方法。我的问题是这种更新是否传播到任何侦听器/模型,或者我是否必须手动绑定它(某处),我目前不知道该怎么做。
此外,选择模型使用只读的可观察列表,这带来了另一个问题,即如何将 GridView 的数据(即项目列表)绑定到选择模型的列表,我假设这是模型用于其流程的内容。
我可能完全可以绕过使用选择模型,并在 Cell/Node 级别拦截输入事件,并在使用支持 ObservableList 或 2 的同时在 Cell 的 updateItem 方法上进行突出显示等操作,以跟踪所有内容并相应地刷新,但这不是最好的方法,更不用说好的方法了。GridView 的选择模型应该是唯一的方法,这就是我在这里的原因。