Загрузка значков с заданного пути для отображения в окне WPF - PullRequest
7 голосов
/ 13 января 2010

У меня есть дерево, которое отображает каталог, и другая панель, которая отображает файлы. Прямо сейчас отображаемые файлы не имеют значков. Все, что я знаю, это путь к файлу. То, что я хотел бы сделать, это заставить этот значок файлов отображаться на этой панели. Мне нужен вывод и Image.source. В настоящее время это то, что у меня есть

    private ImageSource GetIcon(string filename)
    {
        System.Drawing.Icon extractedIcon = System.Drawing.Icon.ExtractAssociatedIcon(filename);
        ImageSource imgs;

        using (System.Drawing.Icon i = System.Drawing.Icon.FromHandle(extractedIcon.ToBitmap().GetHicon()))
            {
                imgs = Imaging.CreateBitmapSourceFromHIcon(
                                        i.Handle,
                                        new Int32Rect(0, 0, 16, 16),
                                        BitmapSizeOptions.FromEmptyOptions());
            }

        return imgs;

Оттуда я вызываю свой itme и пытаюсь изменить его значок по умолчанию:

ImageSource i = GetIcon(f.fullname)
ic.image = i

ic - данный элемент в списке, f.fullname содержит путь вот получить и установить изображение

        public BitmapImage Image
        {
            get { return (BitmapImage)img.Source; }
            set { img.Source = value; }
        }

Это не работает, и это один из многих способов, которые я пробовал, говорит, что он не может разыгрывать разные типы. У кого-нибудь есть способ сделать это?
Я полностью потерян.

1 Ответ

4 голосов
/ 13 января 2010

Я предполагаю, что img - это стандартный Image элемент управления.

Ваше Image свойство имеет тип BitmapImage, который является специфическим типом ImageSource. CreateBitmapSourceFromHIcon возвращает экземпляр внутреннего класса с именем InteropBitmap, который не может быть преобразован в BitmapImage, что приводит к ошибке.

Вам необходимо изменить свое свойство на ImageSource (или BitmapSource, которое CreateBitmapSourceFromHIcon возвращает и наследует ImageSource), например:

public ImageSource Image
{
    get { return img.Source; }
    set { img.Source = value; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...