2017-01-21 2 views
1

Я наблюдаемым коллекции заполнены пути к файлам, например:Преобразовать ObservableCollection путей в коллекцию имен файлов

C:/Documents/1.png 

, и я хотел бы, чтобы преобразовать их все в именах файлов и использовать как ItemsSource для моего ListBox, но ObservableCollection Безразлично» т есть метод ConvertAll

ObservableCollection<string> InputEpisodes = new ObservableCollection<String>(); 

filesFoundListBox.ItemsSource = InputEpisodes.ConvertAll(x => Path.GetFileName(x)); 

ответ

3

Создать Binding конвертер, который преобразует из пути файла в имя файла:

public class FileNameConverter : IValueConverter 
{ 
    public object Convert(
     object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return Path.GetFileName((string)value); 
    } 

    public object ConvertBack(
     object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotSupportedException(); 
    } 
} 

Затем используйте его в ListBox так:

<Window.Resources> 
    <local:FileNameConverter x:Key="FileNameConverter"/> 
</Window.Resources> 

... 
<ListBox x:Name="filesFoundListBox"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Converter={StaticResource FileNameConverter}}"/> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Теперь Вы можете непосредственно присвоить InputEpisodes коллекцию к ItemsSource в ListBox в:

filesFoundListBox.ItemsSource = InputEpisodes; 
0

Ну, а ответ с помощью связывания преобразователя хорошо , если вам может потребоваться дополнительная информация из файла, может быть предпочтительнее создать класс FileInformation, который будет содержать необходимые свойства, такие как FileName, Path, FileSize ...

Таким образом, вы можете легко иметь разные презентации для своего списка, и вы также сможете сохранить исходный путь, который может быть полезен позже, если вам нужно вернуть информацию (возможно, у вас есть несколько копий данного файла имя, если вы разрешаете файлы из нескольких каталогов).

Смежные вопросы