日期:2014-05-17  浏览次数:20791 次

WPF,这个对齐方式,帮我弄迷糊了

<Button  HorizontalContentAlignment="Left" Margin="100,52,0,0" VerticalAlignment="Top" Width="194" Height="105">
    <Button Content="熊俊" Height="55" Width="93" HorizontalAlignment="Center"/>
</Button>



两个问题:
1:
外部Button设置的内容对齐方式Left,内部Button设置与父容器的水平对方为Center,结果却是靠左的,以哪个为准呢?

2:如果改成下面这样的代码:

<Button  Margin="100,52,0,0" VerticalAlignment="Top" Width="194" Height="105">
    <Button Content="熊俊" Height="55" Width="93" HorizontalAlignment="Left"/>
</Button>

HorizontalContentAlignment不是默认值是Left的吗,那外部Button的内容对齐方式是Left,内部Button与父元素的水平对齐方式也是Left,那为什么结果却没有靠左呢?如下图

------解决方案--------------------
1.外部设置HorizontalContentAlignment="Left",因为你的外部Content赋了一个Button对象,所以内部这个Button左对齐。
内部设置HorizontalContentAlignment="Center",因为你的内部Content赋值"熊俊",所以"熊俊"剧中对齐。

2.HorizontalContentAlignment的默认值是Center

*请注意HorizontalContentAlignment和HorizontalAlignment是2个不同的属性!
------解决方案--------------------
引用:
Quote: 引用:

1.外部设置HorizontalContentAlignment="Left",因为你的外部Content赋了一个Button对象,所以内部这个Button左对齐。
内部设置HorizontalContentAlignment="Center",因为你的内部Content赋值"熊俊",所以"熊俊"剧中对齐。

2.HorizontalContentAlignment的默认值是Center

*请注意HorizontalContentAlignment和HorizontalAlignment是2个不同的属性!

是啊,HorizontalContentAlignment和HorizontalAlignment是2个不同的属性,所以第一个问题我并没有内部设置HorizontalContentAlignment="Center",而是HorizontalAlignment="Center"。

第二个问题也是内部设置了HorizontalAlignment="Center",为什么不靠左呢?

你看看button的模板就理解了,Content是放在ContentPresenter中,你设置Content元素的HorizontalAlignment只是在ContentPresenter内部的位置。而ContentPresenter在什么位置是由Button决定的。
------解决方案--------------------
引用:
Quote: 引用: