Похоже, что ml.Pictures содержит всю необходимую информацию (имя и изображение).Зачем вам статический класс?
Вы можете сделать следующее:
var ml = new MediaLibrary();
listBox.ItemSource = ml.Pictures.Where(picture => picture.Name.Contains("s"));
И в вашем XAML:
<UserControl.Resources>
<local:ImageConverter x:Key="ImageConverter"></local:ImageConverter>
...
</UserControl.Resources>
<ListBox x:Name="listBox">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120"></ColumnDefinition>
<ColumnDefinition Width="35"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding Name}"></TextBlock>
<Image Grid.Column="1" Grid.Row="0" Source="{Binding Picture, Converter={StaticResource ImageConverter}}"></Image>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
В шаблоне отображается имя картинки и само изображение в виде миниатюры. Если изображение вам не нужно, используйте вместо него DisplayMemberPath.
<ListBox x:Name="listBox" DisplayMemberpath="Name">
</ListBox>
/// <summary>
/// Converts an image path to the associated image.
/// </summary>
public class ImageConverter : IValueConverter
{
#region IValueConverter implementation
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string imagePath = (string)value;
Uri Uri = new Uri(imagePath, UriKind.Relative);
return new BitmapImage(Uri);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}