Отображение изображения из базы данных в DataGrid [дубликат]

Заголовок Content-Language entity используется для описания языка (языков), предназначенных для аудитории, чтобы он позволял пользователю дифференцироваться в соответствии с собственным предпочтительным языком пользователя.

Header type                     Entity header
Forbidden header name           no
CORS-safelisted response-header yes
CORS-safelisted request-header  yes

- веб-ссылка MDN - заголовки HTTP - контент-язык

blockquote>

HTTP-заголовок запроса Accept-Language рекламирует какие языки клиент может понять, и какой вариант локали предпочтительнее. (По языкам мы имеем в виду естественные языки, такие как английский, а не языки программирования.)

Header type                     Request header
Forbidden header name           no
CORS-safelisted request-header  yes

- веб-ссылка MDN - заголовки HTTP - Accept-Language

blockquote>
0
задан Daniel DirtyNative Martin 19 October 2015 в 14:11
поделиться

2 ответа

Связывание данных работает только для свойств. Вы должны добавить свойство в класс AudioFile для возврата данных обложки. Если вы не хотите поменять AudioFile по некоторым причинам, затем сопоставьте его / заверните в модель просмотра и поместите свойство в эту модель просмотра.

Тогда у вас будет два варианта.

Вариант 1.

Вместо public byte[] CoverAsByteArray { get; } вы можете записать свойство, которое возвращает экземпляр ImageSource , что-то вроде public ImageSource CoverAsImageSource { get; }.

XAML будет выглядеть так:

<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <Image Source="{Binding CoverAsImageSource}"/>
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

Вариант 2.

Вы можете записать значение converter , чтобы преобразовать значение byte[] в ImageSource.

В этом случае XAML будет выглядеть так:

<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <Image Source="{Binding CoverAsByteArray, Converter={StaticResource YourConverterKey}}"/>
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

Предполагая, что byte[] представляет растровое изображение, вы можете использовать, например, this ответ, чтобы преобразовать его в соответствующий источник изображения.

0
ответ дан Community 20 August 2018 в 23:17
поделиться
  • 1
    Извините, я забыл упомянуть, что AudioFile находится внутри PCL, поэтому вариант 1 не будет работать: / В Варианте 2, что YourConverterKey? – Daniel DirtyNative Martin 19 October 2015 в 13:02
  • 2
    Я упомянул, что вы можете сопоставить AudionFile, чтобы просмотреть модель (или обернуть ее в модель просмотра). Вот почему существуют модели просмотра. YourConverterKey является ключом вашей реализации IValueConverter, объявленной где-то выше в ресурсах. См. Эту ссылку, например: wpftutorial.net/ValueConverters.html – Dennis 19 October 2015 в 13:04

вы можете использовать Microsoft.WindowsAPICodePack.Shell для получения изображения из вашего mp3-файла

private string cacheLocalFile(string mp3fileName)
    {
        try
        {
            using (var shell = ShellFile.FromParsingName(mp3fileName))
            {
                Bitmap bmp = shell.Thumbnail.Bitmap;
                var cachedFileName = shell.Properties.System.FileName.Value;
                bmp.Save(Path.Combine(AppCacheDirectory, cachedFileName), ImageFormat.Jpeg);
                bmp.Dispose();
                return Path.Combine(AppCacheDirectory, cachedFileName);
            }
        }
        catch
        {
            return String.Empty;
        }

    }

, вы только что получили миниатюру, сохранили его в файле и вернули файл src в элемент Image, t хотите кэшировать изображение, вы можете просто преобразовать растровое изображение в bitmapImage и связать его с элементом изображения вообще.

1
ответ дан Roman Ostashevskyi 20 August 2018 в 23:17
поделиться
  • 1
    Хорошо, я сделал это с ответами Денниса. Я реализовал новое свойство CoverByBytes и правильно установил привязку. Большое спасибо за вашу помощь – Daniel DirtyNative Martin 19 October 2015 в 14:17
Другие вопросы по тегам:

Похожие вопросы: