WPF - Canvas中的中心控件(标签)

Cit*_*ris 9 c# wpf label canvas

问候

我正在尝试修复WPF应用程序中控件的位置.在我的应用程序中,我有几个标签,每个标签都在不同的画布中.我试图将标签置于画布中心.我目前为一个Label提供的代码如下:

<Canvas Height="42" HorizontalAlignment="Left" Margin="0,1,0,0" Name="canvasPlayer1" VerticalAlignment="Top" Width="172" >
    <Label Content="" Foreground="White" FontSize="15" FontFamily="Eurostile LT ExtendedTwo" Height="Auto" HorizontalAlignment="Center" Margin="0,5,0,0" Name="labelPlayer1Name" VerticalAlignment="Center" Width="Auto" />
</Canvas>
Run Code Online (Sandbox Code Playgroud)

对于初学者来说,问题在于它根本不使文本居中,而是保持在原始位置.我想要实现的是将标签的内容集中在该画布中,但它不能超过画布的宽度.

欢迎提出有用的建议!如果您对我的思维模式有任何意见来解决这个问题,请通知我!

先感谢您

Jos*_*osh 16

你不应该使用Canvas.对齐属性和边距对Canvas中布置的元素没有影响.您应该使用的是网格.Canvas对大多数布局方案并不是特别有用.

<Grid Height="42" HorizontalAlignment="Left" Margin="0,1,0,0" 
      Name="canvasPlayer1" VerticalAlignment="Top" Width="172" >
    <Label Content="" Foreground="White" FontSize="15" 
           FontFamily="Eurostile LT ExtendedTwo" 
           HorizontalAlignment="Center" Margin="0,5,0,0" 
           Name="labelPlayer1Name" VerticalAlignment="Center" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

  • 你实际上并不需要创建的行和列,如果你不希望(尽管它确实使对更清洁的布局.)您也可以只使用边距和取向性的1x1的网格内.这实际上是Visual Studio和Blend中的WPF设计器默认执行的操作. (2认同)