質問編集履歴

1 ((targetList)collection)を((target)collection)に修正

dai49

dai49 score 12

2018/10/31 12:26  投稿

WPF ListView D&Dでの複数コピー、移動について
WPFのListViewにて表示されたアイテムをD&Dで複数コピー、移動を実装したいのですがうまくいきません。
テキストファイルを読み込んでその項目をListViewに表示するようにしています。
targetクラスというクラスの各プロパティに値をセットしています。
###### MainWindow.xaml
```
<ListView x:Name="ListView1" ItemsSource="{Binding Path=targetListMakes}" Grid.RowSpan="2" ContextMenu="{DynamicResource menuListBox}"
                 AllowDrop="True"
                 PreviewMouseLeftButtonDown="ListView1_PreviewMouseLeftButtonDown"
                 Drop="ListView1_Drop">
               <ListView.View>
                   <GridView>
                       <GridViewColumn DisplayMemberBinding="{Binding reserved1}" Header="予約1"/>
                       <GridViewColumn DisplayMemberBinding="{Binding reserved2}" Header="予約2"/>
                       <GridViewColumn DisplayMemberBinding="{Binding group}" Header="グループ"/>
                       <GridViewColumn/>
                   </GridView>
               </ListView.View>
           </ListView>
```
###### MainWindow.xaml.cs
```ここに言語を入力
       private void ListView1_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
       {
           var lb = sender as ListView;
           
           
           if (lb != null && lb.SelectedItem != null)
           {
               DragDrop.DoDragDrop(lb, lb.SelectedItems, DragDropEffects.Copy);
           }
       }
       private void ListView1_Drop(object sender, DragEventArgs e)
       {
           var selectItems = e.Data.GetData("System.Windows.Controls.SelectedItemCollection") as IList;
           var collection = selectItems.Cast<target>();
           target.targetListMakes.Add((targetList)collection);
           target.targetListMakes.Add((target)collection);
           
       }
```
この場合「target.targetListMakes.Add((targetList)collection);」で「キャスト出来ません」のエラーになってしまいます。
この場合「target.targetListMakes.Add((target)collection);」で「キャスト出来ません」のエラーになってしまいます。
e.OriginalSourceだと複数選択した場合でも1つのアイテムしか取得できませんでした。
解決方法や他の方法をご教示いただけないでしょうか。
よろしくお願いいたします。
  • C#

    12640 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • WPF

    1115 questions

    Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る