#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
, но я недостаточно знаю о вашем решении, чтобы предложить его.)