Проблема в том, что значение map.Layers
не изменяется, а Dictionary<TKey, TValue>
не реализует интерфейс INotifyCollectionChanged
. Следовательно, ListBox
не может знать, что любой новый элемент доступен для отображения.
Если возможно, попробуйте изменить свойство Layers
, чтобы вместо него отображалось ObservableCollection<T>
.
Конечно, это может быть проблемой, если у вас должен быть словарь. Если вы заинтересованы только в обеспечении уникальных записей, вы можете использовать HastSet
ключей для управления этим. Если вам нужен Ключ для поиска, тогда, если есть несколько пунктов, последовательный поиск должен работать достаточно хорошо.
Полноценное решение может заключаться в реализации ObservableDictionary
с интерфейсами IDictionary<TKey, TValue>
и INotifyCollectionChanged
. Если вы ищете «ObservableDictionary Silverlight», есть несколько примеров, просто будьте осторожны, чтобы они действительно реализовали правильные интерфейсы, не очень хорошо, если он «наблюдаемый», но не совместим с ItemsSource
.