2012-04-30 2 views
1

У меня есть ListBox в режиме выделения, содержащий некоторые элементы. Я реализовал, что пользователь может изменить порядок элементов, перетащив &. Все работает отлично, но выглядит очень уродливо, потому что listbox автоматически выбирает элемент, если кнопка мыши выключена, а курсор перемещается по элементу..NET ListBox - отключить выбор элементов на мыши над

Конкретно: Чтобы отключить мерцание в некоторых ситуациях, я перемещаю предметы только тогда, когда предмет перетаскивается более чем наполовину поверх другого элемента. Когда я начинаю перетаскивать item1 над item2, чтобы поместить его за item2, я хочу, чтобы item1 был выбран при перетаскивании. Что происходит, так это то, что item2 выбирается, как только курсор перемещается по элементу2. Как я могу избавиться от этого поведения?

Я уже пытался установить e.Handled = true в PreviewMouseMove при перетаскивании элементов, но это не поможет.

Если вам нравится этот код, он находится здесь: http://pastebin.com/GTj96qV9. Это поведение, которое позволяет любому списку, который имеет IList как DataSource, переупорядочить его содержимое, перетаскивая его.

ответ

1

Самое чистое решение для меня состояло в том, чтобы наследовать от ItemsControl и реализовать собственный «селектор».

0

Это может повредить часть капли, но вы попытались дать захват мыши ListBoxItem? MSDN имеет more details about this.

Надеюсь, это поможет.

0

Это ListView. И я не вдавался в детали вашего кода. Но я просматриваю PreviewMouseLeftButtonDown в ListViewItem, и у меня нет проблемы, которую вы описываете.

<ListView.ItemContainerStyle> 
      <Style TargetType="{x:Type ListViewItem}"> 
       <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListView1Item_PreviewMouseLeftButtonDown" /> 
       <Setter Property="AllowDrop" Value="True" /> 
       <EventSetter Event="DragDrop.Drop" Handler="ListView1Item_DragDrop" /> 
       <Style.Triggers>      
        <DataTrigger Binding="{Binding DispDetail}" Value="False"> 
         <Setter Property="Visibility" Value="Collapsed"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </ListView.ItemContainerStyle>  
Смежные вопросы