我对Windows Phone 7 XAML编程有疑问。
<StackPanel Orientation="Vertical" Width="110">
<Canvas Margin="0">
<TextBlock Text="{Binding Menesis}" Foreground="{Binding MyColor}"></TextBlock>
</Canvas>
<Canvas Margin="0,12,0,0">
<TextBlock Text="{Binding Datums}" Foreground="{Binding MyColor}" FontSize="85" HorizontalAlignment="Center" TextAlignment="Center" />
</Canvas>
<Canvas Margin="0,105,0,0">
<TextBlock Text="{Binding Nedelas_diena}" Foreground="{Binding MyColor}" />
</Canvas>
</StackPanel>
如何使TextBlock
(绑定基准)文本居中?目前它在右侧对齐
HorizontalAlignment="Center"
或
TextAlignment="Center"
不起作用。
答案 0 :(得分:4)
如果在画布中有TextBlock,那么对齐会出现问题,因为TextBlack将放置在画布控件内的0,0(左上角),并且(除非您明确设置宽度)将被拉伸以适应包含的文字。这基本上意味着您的文本将始终保持对齐。
只有在需要设置包含元素的确切位置时才应使用Canvas控件。如果不是这种情况,那么使用另一个容器,如Grid,StackPanel,甚至只是一个ContentControl。
从xaml中移除Canvas,它应该可以正常工作。
澄清HorizontalAlignment与TextAlignment: 如果你有一个400px宽的ContentControl并且你添加一个TextBlock,它设置为200px宽,文本内容为100px宽,那么以下是真的:
在我看来,这里的最佳做法是不设置任何宽度,只需设置TextAlignment属性即可。这意味着(对于大多数容器),TextBlock将在容器的整个宽度和文本内进行适当的对齐。
答案 1 :(得分:0)
而不是使用堆栈面板和画布。要么你可以使用网格。如果您使用网格,则可以指出需要放置控件的确切位置。 例如,
&lt; -----身高 - &gt;
像这样。更多的是没有必要使用画布。画布容器主要用于游戏设计目的。