программно добавлять удалять элементы из словаря ресурсов

#c# #.net #wpf

#c# #.net #wpf

Вопрос:

Я просто новичок в wpf и планирую использовать listbox для генерации недавно открытых или закрытых элементов. Каждый раз, когда файл открывается, он постоянно добавляется в словарь ресурсов типа listbox item.

С другой стороны, помимо элемента listbox есть кнопка для удаления ссылки.

Возможно ли это?

Ответ №1:

ResourceDictionary — это IDictionary . Вы можете использовать индексатор для добавления / переопределения элементов.

myResourceDictionary["somekey"] = someObject;

И вы можете использовать методы Add() и Remove().

Что касается вашего сценария, я бы предпочел вместо этого использовать ObservableCollection и привязать к нему ваш listbox.

Комментарии:

1. 1 для привязки к ObservableCollection: в конце концов, это способ wpf

2. Можем ли мы добавлять элементы в ResourceDictionary, который объявлен как объединенный словарь с набором свойств источника?

Ответ №2:

Это действительно возможно, и, в дополнение к ответу bitbonk, я бы сказал это:

Вы, вероятно, не хотите, чтобы ObservableCollection заполненный ListBoxItems . ListBoxItem это класс, который WPF использует для рендеринга, и вы обычно не создаете их самостоятельно. Если вы создаете свой источник данных в виде коллекции (например) FileInfo объектов, вы можете использовать шаблоны данных, чтобы отобразить эти элементы в списке так, как вы хотите. Это также имеет то преимущество, что вам не нужно писать код, преобразующий ваши объекты данных в отдельный класс только для целей отображения.

(Скорее всего, вы бы использовали свой собственный тип данных / модели, а не FileInfo , но я недостаточно знаю о вашем решении, чтобы предложить его.)