2012-04-30 20 views
1

いくつかの項目を含む単一選択モードのリストボックスがあります。私はユーザーがドラッグして項目を並べ替えることができると実装しました&ドロップ。すべて正常に動作しますが、マウスボタンが押されてカーソルが項目上を移動している場合、リストボックスが項目を自動的に選択するため、実際には醜いように見えます。.NET ListBox - マウスで項目を選択できないようにする

具体的には: いくつかの状況でフリッカーを無効にするには、項目を別の項目の上に半分以上ドラッグしたときにのみ項目を移動します。 item2をitem2の上にドラッグしてitem2の後ろに置くと、ドラッグ中にitem1が選択されます。カーソルがitem2の上を移動するとすぐにitem2が選択されます。どうすればこの行動を取り除くことができますか?

アイテムをドラッグしている間にPreviewMouseMoveでe.Handled = trueを設定しようとしましたが、これは役に立ちません。

コードをご覧になりたい場合は、http://pastebin.com/GTj96qV9です。これは、DataSourceとしてIListを持つリストボックスをドラッグしてコンテンツの順序を変更できるようにする動作です。

答えて

1

私にとってもっともきれいな解決策は、ItemsControlから継承し、自分自身の「セレクタ」を実装することでした。

0

これは、ドロップ部分をねじれてしまう可能性がありますが、ListBoxItemマウスのキャプチャを試しましたか? MSDNはmore details about thisです。

これが役に立ちます。

0

これはListViewです。そして私はあなたのコードの詳細には入っていませんでした。しかし、私はListViewItemでPreviewMouseLeftButtonDownをやっているので、あなたが説明する問題はありません。

<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>  
関連する問題