Зачем нам нужны «прикрепленные свойства»? Концепция этого немного меня беспокоит, так как вы можете задавать значения свойств, которые даже не существуют в конкретном DependencyObject (и они просто будут игнорироваться). Это почти кажется решением проблемы - почему бы просто не делать то, что, например, HTML имеет и имеет родительский элемент явно определять такие вещи, как позиционирование для детей?
То есть вместо:
<Grid>
<Grid.ColumnDefinitions>
<!-- etc. -->
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<!-- etc. -->
</Grid.RowDefinitions>
<SomeElement Grid.Column="0" Grid.Row="0" />
<!-- etc. -->
</Grid>
Почему бы не что-то вроде этого (эквивалент <tr>
и <td>
в HTML):
<Grid>
<Grid.Row>
<Grid.Column>
<SomeElement />
</Grid.Column>
<!-- etc. -->
</Grid.Row>
</Grid>
Возможно, сетки - просто плохой пример, а присоединенные свойства имеют больше смысла в других контекстах? Или, может быть, я что-то упустил совсем?