J C*_*per 3 wpf xaml design-decisions attached-properties
为什么我们需要"附加属性"?它的概念让我有点烦恼,因为你可以想象设置特定DependencyObject上甚至不存在的属性值(并且它们将被默默地忽略).它几乎看起来像是一个寻找问题的解决方案 - 为什么不只是像HTML那样做,并让父元素明确地确定儿童定位等事情?
也就是说,而不是:
<Grid>
<Grid.ColumnDefinitions>
<!-- etc. -->
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<!-- etc. -->
</Grid.RowDefinitions>
<SomeElement Grid.Column="0" Grid.Row="0" />
<!-- etc. -->
</Grid>
Run Code Online (Sandbox Code Playgroud)
为什么不是这样的(相当于<tr>和<td>在HTML中):
<Grid>
<Grid.Row>
<Grid.Column>
<SomeElement />
</Grid.Column>
<!-- etc. -->
</Grid.Row>
</Grid>
Run Code Online (Sandbox Code Playgroud)
也许网格只是一个不好的例子,附加属性在其他环境中更有意义?或许我完全错过了一些东西?
您需要附加属性来定位网格中元素的最明显原因是您可以使用绑定:
<Grid.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Grid.Row" Value="{Binding Row}"/>
<Setter Property="Grid.Column" Value="{Binding Column}"/>
</Style>
</Grid.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)
要在HTML中实现类似的功能,您必须编写代码,以便在行和/或列号更改时显式删除和重新添加元素.
| 归档时间: |
|
| 查看次数: |
799 次 |
| 最近记录: |