Для обнаружения изменения есть разница между соблюдением SelectedIndex против SelectedItem?
Не совсем; Я думаю, что это только вопрос того, что вам больше всего подходит.
Чтобы перетаскивать элементы ListView есть какая-то разница между регистрирующим onDrag .. событиями против ListView против каждого ListCell?
Я буду выступать за регистрацию с помощью ListCell
. Нет прямого способа проверить событие мыши на ListView
, а затем определить, в какой ячейке произошло событие мыши. Вам нужно будет отступить на выбранном элементе, и это на самом деле не семантически то же самое. (Например, как бы вы справляетесь перетащить на пустые ячейки, которые не изменили бы выбор ...?)
Есть ли сценарий, когда событие «onDragDetected» будет получено перед моделью выбора (который я наблюдаю) обновляется?
Это зависит от реализации. I думаю, что в текущей реализации использует событие mousePressed
для обработки выбора (хотя я не уверен), поэтому он должен запускаться до обнаружения перетаскивания, но действительно ли вы хотите полагаться на эту реализацию, не меняющуюся в будущей версии?
IMHO, полагаясь на выбранный элемент, просто чувствует себя не так. Это семантически отличается от того, что вы хотите: вы действительно хотите знать «какой элемент пользователь нажал», а не «какой элемент выбран». Конечно, эти два связаны друг с другом, но они не одно и то же, поэтому в какой-то мере вы будете вводить зависимость от API выбора, который должен быть независим от того, что вы пытаетесь достичь. Это, безусловно, мнение. Ваш пробег может варьироваться ...
Согласен. Также BehaviorSkinBase определяет обработчик событий мыши, а ListViewBehavior обрабатывает mousePressed, который обновляет модель выбора и фокусируется. Сцена содержит материал dnd, и кажется, что жест может быть инициирован на событии mousePressed. – shnplr