WPF - 从放置事件向列表视图添加多个文件

Rob*_*son 0 c# wpf .net-4.0

所以当我将多个文件拖入我的应用程序时,我的问题就出现了,而且我将一个文件添加到 listView 没有问题。

当我尝试将多个文件添加到 listView 时,问题就出现了。

我希望它可能与我将文件添加到列表视图的方式有关。

当我将第一个文件拖放到我的应用程序中时,只有第一个文件被添加到列表视图中,并且我需要将所有文件添加到列表中。

我怎样才能做到这一点?(即:我离我有多远?)

任何帮助表示赞赏!

但无论如何......这是我到目前为止所得到的:

 <ListView x:Name="scanQueue" ItemsSource="{Binding itemList}" Margin="0,122,0,0">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Item Name" Width="200" DisplayMemberBinding="{Binding Name}"/>
                <GridViewColumn Header="Size" Width="80" DisplayMemberBinding="{Binding Size}"/>
            </GridView>
        </ListView.View>
    </ListView>
Run Code Online (Sandbox Code Playgroud)

以及背后的代码:

 public class items
        {
            public string Name { get; set; }
            public string Size { get; set; }

        }

        public IList<items> itemList { get; set; }

        public void addToList(string name, string size)
        {
            itemList = new List<items>()
            {
               new items() {Name=name, Size=size }
            };
         }
Run Code Online (Sandbox Code Playgroud)

我认为,我在这里遇到的问题是我尝试将我的数据添加到 listView 的两列中。

所以,这是魔法应该发生的方法:

 private void Window_DragDrop(object sender, DragEventArgs e)
        {
            string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
            foreach (string file in files)
            {
                FileInfo fi = new FileInfo(file);
                long byteSize = fi.Length;
                string stringSize = BytesToString(byteSize);
                string name = fi.Name;
                addToList(name, stringSize);
            }
    }
Run Code Online (Sandbox Code Playgroud)

我现在通读了这个并意识到我没有很好地解释这个......但我希望有人理解我的问题。

谢谢!

Rob*_*son 5

好的,所以这比我想象的要简单得多......现在感觉很愚蠢。这可能不是我做过的最漂亮的实现。

这里的这个小美女就是暗指我的那个!

 scanQueue.Items.Add(new { itemName = name, itemSize = stringSize });
Run Code Online (Sandbox Code Playgroud)
 scanQueue.Items.Add(new { itemName = name, itemSize = stringSize });
Run Code Online (Sandbox Code Playgroud)