目前,当我使用Window_Drop
事件将n个文件拖放到我的ListBox中时,我有这个代码。
string[] files = (string[]) e.Data.GetData(DataFormats.FileDrop, true);
listBox.Items.Add(files);
在WinForm中可以正常工作,它打印出我刚刚拖放到ListBox中作为项目的文件的路径。
但是当我在WPF中做同样的事情时,我得到了这个
String [] Array
作为输出而不是路径。
现在我知道WinForm的代码并没有完全转移到WPF,但我猜它会非常相似?
如何正确地将项目拖放到ListBox,并显示文件的路径?
答案 0 :(得分:1)
不是将string[]
添加到ListBox,而是需要从数组的指定索引添加一个字符串,如listBox.Items.Add(files[yourIndex]);
编辑:如果你要一次导入多个文件而不从同一个阵列中添加更多文件,你应该这样做:
foreach(string path in files)
{
listBox.Items.Add(path);
}
答案 1 :(得分:0)
您可以将ListBox的ItemsSource属性设置为字符串[]:
string[] files = (string[]) e.Data.GetData(DataFormats.FileDrop, true);
listBox.ItemsSource = files;
在WPF中,您通常将ItemsControl(例如ListBox)的ItemsSource属性绑定到IEnumerable< T>。并在XAML标记中定义一个ItemTemplate,用于定义T类型的每个对象的外观:
WPF ListBox using ItemsSource and ItemTemplate
<ListBox x:Name="listBox">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Foreground="Green" FontSize="16" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>