难以理解保证金属性

时间:2011-11-17 14:26:00

标签: c#

MSDN描述的保证金属性,引用:

  

Margin属性描述元素与其子(为什么不是父?)或同伴之间的距离。

但是如何确定边距是否描述了元素与其子(父)或同伴之间的距离?这里有两个例子: 第一个:

<GroupBox Header="Experience" Height="200"  Name="yearsExperience"  Width="200">
    <StackPanel   Margin="0,0,0,0" >
       <RadioButton Content="Up to 1 year" Height="16" Name="novice" Width="120" Margin="0, 10, 0, 0" />
        <RadioButton Content="1 to 4 years" Height="16" Name="intermediate" Width="120" Margin="0, 20, 0, 0" />
         <RadioButton Content="5 to 9 years" Height="16" Name="experienced" Width="120" Margin="0, 20, 0, 0" />
         <RadioButton Content="10 or more" Height="16" Name="accomplished" Width="120" Margin="0, 20, 0, 0" />
       </StackPanel>
</GroupBox>
第二个:

<GroupBox Header="Experience" Height="200"  Name="yearsExperience"  Width="200">
    <Grid  Margin="0,0,0,0" >
       <RadioButton Content="Up to 1 year" Height="16" Name="novice" Width="120" Margin="0, 10, 0, 0" />
        <RadioButton Content="1 to 4 years" Height="16" Name="intermediate" Width="120" Margin="0, 20, 0, 0" />
         <RadioButton Content="5 to 9 years" Height="16" Name="experienced" Width="120" Margin="0, 20, 0, 0" />
         <RadioButton Content="10 or more" Height="16" Name="accomplished" Width="120" Margin="0, 20, 0, 0" />
       </Grid>
</GroupBox>

显然,在第一个示例中,边距描述了对等点(RadioButtons)之间的距离,而在第二个示例中,边距描述了RadioButtons和Grid(父)顶部之间的距离,RadioButtons应相互重叠。这真的很棘手,那真正发生了什么?

2 个答案:

答案 0 :(得分:0)

您可以将边距视为您应用它的对象与该对象周围的任何其他内容之间的设定距离,无论它是父节点还是对等节点。

我不知道“技术”定义是什么,但这就是它始终有效的方式。

另一方面,填充是对象边界与对象中包含的任何内容之间的距离。

答案 1 :(得分:0)

StackPanel和Grid组件具有不同类型的插入子级。在两个示例中,边距与位置根据布局改变的位置相同。在StackPanel中,每个子项都在布局中与StackPanel属性相关的最后一个子项之后添加,例如从左到右,从下到上等等。在Grid中,子项的位置必须由编码器给出,如果不是每个子项都添加在layouf的锚点上,作为默认的左上角,如果任何位置被分配,它们将相互重叠。