Иконки для списка

197
23 марта 2018, 09:55

Делаю программу для очистки ресурсов пк путем закрытия программ, не внесенных в WhiteList. Для наглядности решил добавить иконки приложений к их названиям, но как это сделать - не имею ни малейшего представления.

Answer 1

Всё просто. Единственная сложность — вам придётся подключить System.Drawing для того, чтобы вытащить иконку.

На самом деле, согласно MVVM добыча иконки — задача модели, но я для простоты сделаю это в VM. Получаем следующее:

class FileVM
{
    public string Name { get; }
    public ImageSource Icon { get; }
    public FileVM(string path)
    {
        Name = System.IO.Path.GetFileName(path);
        using (var icon = System.Drawing.Icon.ExtractAssociatedIcon(path))
        {
            Icon = System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon(
                        icon.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
        }
    }
}

В DataContext помещаем, к примеру,

var systemFolder = Environment.GetFolderPath(Environment.SpecialFolder.System);
var files = Directory.EnumerateFiles(systemFolder, "*.exe");
var vms = files.Take(20).Select(p => new FileVM(p)).ToList();

Простейший XAML:

<ItemsControl ItemsSource="{Binding}">
    <ItemsControl.ItemTemplate>
        <ItemContainerTemplate>
            <DockPanel LastChildFill="True">
                <Image Source="{Binding Icon}" Height="32" Width="32" DockPanel.Dock="Left"/>
                <TextBlock Text="{Binding Name}"/>
            </DockPanel>
        </ItemContainerTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Получаем:

READ ALSO
Отрисовка циклоиды на ZedGraph/Chart

Отрисовка циклоиды на ZedGraph/Chart

Всем доброго времени сутокВстал перед вопросом, есть простенькая формула выражающая координату Х графика кривой Циклоида

257
datagridview и tabcontrol winforms c#

datagridview и tabcontrol winforms c#

Есть таблица Rooms и tabcontrolВ таблице Rooms есть Id и Name=Кабинка 1, Кабинка 2 и

195
Получить путь до каталога выше

Получить путь до каталога выше

В папке Debug имеется папка "Updater", из нее запускается exe и загружает файлы в папку bin/Debug/Updater/temp/, нужно переместить файлы из папки temp в папку /bin/ Подскажите,...

231
Переписать элементы массива. C#

Переписать элементы массива. C#

Ребят, подскажите, почему при добавлении элемента в методе InsertElement() индекс выходит за границы?

204