为什么我们需要“附加属性”?它的概念让我有点困惑,因为您可以想象设置特定 DependencyObject 上甚至不存在的属性的值(它们将被默默地忽略)。这似乎是一个寻找问题的解决方案——为什么不只做 HTML 所做的事情,让父元素明确地确定子元素的定位?
也就是说,而不是:
<Grid>
<Grid.ColumnDefinitions>
<!-- etc. -->
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<!-- etc. -->
</Grid.RowDefinitions>
<SomeElement Grid.Column="0" Grid.Row="0" />
<!-- etc. -->
</Grid>
为什么不这样(相当于HTML中的<tr>
and ):<td>
<Grid>
<Grid.Row>
<Grid.Column>
<SomeElement />
</Grid.Column>
<!-- etc. -->
</Grid.Row>
</Grid>
也许网格只是一个不好的例子,附加属性在其他情况下更有意义?或者也许我完全错过了一些东西?