WPF: невозможно установить элементы коллекции только для чтения в XAML - PullRequest
2 голосов
/ 10 марта 2010

Сценарий действительно прост. У меня есть свойство коллекции только для чтения моего пользовательского элемента управления, и я хочу установить элементы коллекции в XAML. Как это:

<l:CustomControl>
   <l:CustomControl.ControlItems>
     <l:CustomItem />
     <l:CustomItem />
  </l:CustomControl.ControlItems>
</l:CustomControl>

Свойство ControlItems имеет методы доступа internal set и public get и имеет тип FreezableCollection<CustomItem>.

Дело в том, что я получаю ошибки сборки, которые говорят, что это невозможно, потому что мое свойство ControlItems не имеет доступного set средства доступа.

Как я знаю, этот сценарий поддерживается в WPF (начиная с .NET3.5SP1). Я ошибся? В чем может быть проблема? Это работает с Grid.RowDefinitions, я пытался добавить атрибут DesignerSerializationVisibility, но он не работал.

Редактировать: я заметил, что я получаю эту ошибку, только когда у меня установлен метод доступа internal, private или protected. Когда я полностью удаляю аксессор, все нормально строится.

1 Ответ

6 голосов
/ 03 мая 2010

ОК, позвольте мне написать что-нибудь здесь, чтобы отметить это как ответ. Парсер XAML не может добавлять элементы в ваш элемент управления, если у него есть внутренний, закрытый или защищенный метод set. Решение состоит в том, чтобы удалить метод внутреннего / частного / защищенного набора. Если не существует метода set, все в порядке. Это звучит глупо, но это факт.

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

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