0

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

当我尝试将多个文件添加到 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>

以及背后的代码:

 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 }
            };
         }

而且我认为,我在这里遇到的问题是我尝试将我的数据添加到 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);
            }
    }

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

谢谢!

4

2 回答 2

5

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

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

 scanQueue.Items.Add(new { itemName = name, itemSize = stringSize });
  public class items
        {
            public string itemName { get; set; }
            public string itemSize { get; set; }

        }

        List<string> test = new List<string>();

        public void Window_DragDrop(object sender, DragEventArgs e)
        {
            string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
            List<string> fileList = new List<string>(files);

            foreach (string file in fileList)
            {
                FileInfo fi = new FileInfo(file);
                Console.WriteLine(fi.Name);
                long byteSize = fi.Length;
                string stringSize = BytesToString(byteSize);
                string name = fi.Name;
                scanQueue.Items.Add(new { itemName = name, itemSize = stringSize });
            }
            fileList.Clear();
        }
于 2013-04-19T22:25:28.747 回答
1

我要做的第一件事是使用 ObservableCollection,而不是使用 IList。第二件事是一旦您验证 (string[])e.Data.GetData(DataFormats.FileDrop); 按预期返回多个文件我将方法 addToList 更改为

public void addToList(string name, string size)
    {
        itemList.Add( new items() {Name=name, Size=size });
    } 
于 2013-04-19T17:36:45.663 回答