WPF: привязка данных к свойству словаря - PullRequest
0 голосов
/ 31 августа 2010

У меня есть UserControl со свойством типа Dictionary, называемым HighlightedDates.Свойство содержит набор дат со строкой всплывающей подсказки для каждой даты и отлично работает при установке из кода.

Я хочу связать свойство HighlightedDates со свойством модели представления, DatesWithNotes, того же типа, используя эту разметку:

<MyControls:MyCalendar SelectedDate="{Binding SelectedDate}"
                       HighlightedDates="{Binding DatesWithNotes}" />

К сожалению, я получаю это исключение при попыткеДля этого:

Невозможно установить привязку в свойстве «Значение» типа DictionaryEntry.«Связывание» может быть установлено только для свойства DependencyProperty объекта DependencyObject.

Похоже, что WPF пытается связать отдельную запись, а не сам словарь.

В качестве альтернативыглядя на то, как модель представления выталкивает каждое новое значение, добавленное в его словарь, в словарь пользовательского элемента управления, который кажется ужасно неуклюжим.И это подводит меня к моему вопросу: есть ли способ заставить это связывание работать?Спасибо за вашу помощь.

Ответы [ 3 ]

2 голосов
/ 02 октября 2011

Похоже, что в конструкторе WPF VS2010 есть ошибка, которая может приводить к появлению этого сообщения об ошибке, даже если привязка прекрасно работает во время выполнения.

2 голосов
/ 02 сентября 2010

Эта проблема становится более интересной.Karmicpuppet попытался воспроизвести ошибку, используя простой тестовый проект - см. Его комментарий выше.Он не получил ошибку в своем тесте, но я получил ее, когда запустил тот же тест.

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

1 голос
/ 17 июля 2012

Даже если это уже довольно старый вопрос, ошибка «Связывание» не может быть установлена ​​для свойства «Значение» типа «DictionaryEntry». «Связывание» может быть установлено только для свойства DependencyProperty объекта DependencyObject. может быть брошено только потому, что свойство DependencyProperty не установлено как static.

Это то, с чем мне приходится время от времени бороться, просто чтобы заметить, что ключевое слово static отсутствует. Это так легко остаться незамеченным, особенно когда есть ключевое слово readonly.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...