В этом конкретном случае Selector
имеет DP IsSelected
, потому что есть ряд элементов управления, которые вытекают из него, элементы которых могут быть выбраны (ComboBox
, ListBox
, ListView
, TabControl
, DataGrid
). Всем им нужна возможность пометить элемент с помощью IsSelected
, поэтому DP объявлен в их общем базовом классе. Как сказал Тим, СУХОЙ.
Другая причина, по которой TabItem
добавляет себя в качестве владельца, заключается в том, что в классе Selector
IsSelected
является вложенным свойством, поскольку в Selector
можно иметь практически все, что угодно в качестве элемента. Прикрепленные свойства довольно мобильны.
Однако TabItem
добавляет себя в качестве владельца, так что он не является присоединенным свойством TabItem
. Он также регистрирует метод обратного вызова, который вызывается при изменении значения, так что он может делать несколько вещей, когда он выбран или не выбран.
И да, легче набрать <TabItem
и увидеть IsSelected
в Intellisense, а не идти: «Но, черт возьми, я могу сделать один выбранным?» и вам придется искать и находить, что вам нужно использовать прикрепленное свойство из другого класса.