2015-05-19 67 views
0

我想了解属性更改和ListView内的鼠标事件的顺序。ListView单选变化和拖动事件

  1. 要检测更改是否有观察selectedIndex与selectedItem之间的差异?

  2. 要拖放ListView项是否有任何区别注册onDrag ..事件对ListView VS每个ListCell?

  3. 是否有任何情况下,在选择模型(我正在观察)更新之前会收到“onDragDetected”事件?

感谢

回答

0

要检测一个变化是有观察 的selectedIndex VS selectedItem属性之间的区别吗?

不是真的;我认为这只是您最方便使用的一个问题。

拖放ListView项目是否有任何区别 注册onDrag ..针对ListView vs每个ListCell的事件?

我会主张用ListCell注册。没有直接的方法检查ListView上的鼠标事件,然后确定鼠标事件发生在哪个单元格上。你将不得不退回选定的项目,这在语义上并不是同一个东西。 (例如,你会如何处理拖动空白单元格,这不会改变选择......?)

是否存在这样一种“onDragDetected”事件将选择模型之前收到 任何情况下(我正在观察)更新?

这取决于实施。我认为当前的实现使用mousePressed事件来处理选择(虽然我不确定),所以它应该在检测到拖动之前触发,但是你真的想要在未来版本中不会改变该实现吗?

恕我直言,依靠选定的项目只是在这里感觉不对。它在语义上与你想要的不同:你实际上想知道“用户点击了哪个项目”,而不是“选择哪个项目”。当然,这两者是相关的,但它们并不相同,所以在某种程度上,您将引入对选择API的依赖关系,这应该与您尝试实现的目标无关。不过,这绝对是一种意见。您的里程可能会有所不同...

+0

我同意。此外,BehaviorSkinBase定义了鼠标事件处理程序,并且ListViewBehavior处理了更新选择模型和焦点的mousePressed。场景包含dnd的东西,它看起来可以在mousePressed事件上启动手势。 – shnplr