Почему так много элементов управления wpf реализуют свойства CLR вместо свойств зависимостей? - PullRequest
2 голосов
/ 03 апреля 2010

это потому, что программисты управления ленивы, слишком сложны в реализации или не осведомлены?

Независимо от того, являются ли они пользовательскими элементами управления сторонних поставщиков или самой Microsoft, очень многие элементы управления часто имеют свойства clr вместо DP. Результат, я не могу связать их, и wpf не все о связывании? : /

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

Что ты думаешь?

1 Ответ

4 голосов
/ 04 апреля 2010

Вы не приводите примеры элементов управления, о которых вы думаете, и даже тогда было бы трудно заглянуть в мотивацию людей, которые их разработали и реализовали, но вот несколько соображений:

  1. Некоторые пакеты управления WPF и Silverlight являются портами из установленных наборов Windows Forms. В этих случаях разработчики часто используют минимальный порт и поэтому получают ту же процедурную модель программирования без привязки, что и код WinForms, который они переносят. Я вспоминаю, как оценивал набор диаграмм Silverlight следующим образом - основной пример выглядел в точности как код WinForms, а не в поле зрения.
  2. Удивительное число программистов WPF, похоже, не «понимают», что WPF «все о связывании» (и стилизация и шаблонирование; как правило, WPF декларативный, а не обязательный). Посмотрите на количество вопросов о переполнении стека, в которых задается вопрос о том, как действовать в WPF, когда идиоматическим решением было бы сделать это декларативно.
  3. Иногда разработчик может счесть, что просто нецелесообразно или нежелательно, чтобы конкретное свойство было целью привязки, например, потому что элемент управления должен делать магические внутренние вещи с этим свойством, или потому что дизайнер не может предусмотреть какой-либо сценарий в котором свойство когда-либо должно быть привязано к данным.
  4. Иногда идиома DP противоречит идиоме свойства CLR. Например, свойство коллекции CLR обычно доступно только для чтения (и управляется с помощью методов Add, Remove и Clear) - FxCop даже имеет правило для этого. Но для того, чтобы быть привязываемым, DP коллекции должен быть доступен для чтения и записи. В этом случае разработчик элемента управления (особенно тот, кто слишком доверяет FxCop) может подумать над идиомой CLR, особенно когда он не может придумать сценарий связывания («зачем кому-то когда-либо нужно связывать GridView». Коллекция колонн? ").

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

...