Why do we need "attached properties"? The concept of this makes me a little difficult, since you can probably set property values that do not even exist on a specific DependencyObject (and they will simply be ignored). It seems like a solution that is looking for a problem - why not just do something, for example. HTML does, and does the parent element explicitly define things like positioning for children?
That is, instead of:
<Grid>
<Grid.ColumnDefinitions>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
</Grid.RowDefinitions>
<SomeElement Grid.Column="0" Grid.Row="0" />
</Grid>
Why not something like this (equivalent to <tr>and <td>in the HTML):
<Grid>
<Grid.Row>
<Grid.Column>
<SomeElement />
</Grid.Column>
</Grid.Row>
</Grid>
Perhaps grids are just a bad example, and the attached properties make more sense in other contexts? Or maybe I missed something at all?