Silverlight: двусторонняя привязка для свойства DependencyProperty (IList) не работает - PullRequest
2 голосов
/ 11 января 2011

Хорошо ... он работает, НО только когда пользователь создает свойство типа List.

Вот полный сценарий.

У меня есть шаблонный элемент управления (Multi Select ComboBox with Checkboxes)Пользователь задает List / ObservableCollection в качестве его ItemsSource.Коллекция может быть любого типа (сотрудник, стул, человек и т. Д.).DependencyProperty для ItemsSource имеет тип IList.

Пользователь также может предоставить список с двусторонней привязкой в ​​DependencyProperty с именем SelectedItems (чтобы он мог показать некоторые элементы как проверенные и вернуть элементы, которые проверены)

Теперь проблема с дп SelectedItems.Это тип IList в шаблонном контроле.Двусторонняя привязка не работает, если пользователь связал ее, скажем, с List<Person>.Но это работает, если List<Person> изменяется на List<object>.

Я не могу понять, что я не делаю правильно!

1 Ответ

1 голос
/ 11 января 2011

Не имеет смысла размещать привязку TwoWay в свойстве SelectedItems. Это подразумевает, что элемент управления должен создать и назначить экземпляр объекта, реализующий IList, свойству исходного объекта. Однако для элемента управления нет способа узнать, какой фактический тип создать для присвоения свойству.

Вместо этого вы должны использовать привязку OneWay к списку, который уже существует в исходном объекте, хотя и пустом. Задача управления состоит в том, чтобы просто добавить или удалить членов в этом списке из списка, указанного в свойстве ItemsSource.

...