WPF之布局属性HorizontalAlignment、HorizontalContentAlignment、VertialAlignment、VerticalContentAlignment

WPF中调整控件相对位置的属性有很多,比较常见的属性比如:HorizontalAlignment、HorizontalContentAlignment、VertialAlignment、VerticalContentAlignment。

到底如何使用呢?以下以HorizontalAlignment和HorizontalContentAlignment为例来说明。

--->HorizontalAlignment/VerticalAlignment,指自身相对于父元素的位置。

--->HorizontalContentAlignment/VerticalContentAlignment,指子元素在自身元素中的相对位置。这里之前一直以为,只有内容控件(ContentControl或其子类)才能设置该属性,实际上不仅仅是ContentControl,还有其它一些元素也有(比如TextBox、Slider......)。不过,最常用的TextBlock控件式没有HorizontalContentAlignment/VerticalContentAlignment属性的。

以下是一些常见元素的默认HorizontalContentAlignment/VerticalContentAlignment的默认值。

元素名     HorizontalContentAlignment / VerticalContentAlignment

Button – Center, Center

Calendar – Left, Top

CheckBox – Left, Top

ComboBox – Left, Top

ContextMenu – Left, Center

DataGrid – Left, Top

DatePicker – Stretch, Top

Expander – Stretch, Stretch

GroupBox – Left, Top

Label – Left, Top

ListBox – Left, Center

Menu – Left, Top

PasswordBox – Left, Top

ProgressBar – Left, Top

RadioButton – Left, Top

RepeatButton – Center, Center

RichTextBox – Left, Top

Slider – Left, Top

StatusBar – Left, Top

TabControl – Center, Center

TextBox – Left, Top

TreeView – Left, Center

此外,需要注意的是,对于有些元素在特定环境下来讲,设置HorizontalAlignment/VerticalAlignment是无效的。

比如:

(1)StackPanel中放置的元素,如果StackPanel的Orientation=Horizontal,那么StackPanel中元素的水平位置都是从左向右排列,无法通过设置 HorizontalAlignment来调整StackPanel内部元素的水平位置。同样,当StackPanel的Orientation=Vertical,那么StackPanel中元素的竖直位置都是从上向下排列,无法通过设置 VerticalAlignment来调整StackPanel内部元素的竖向位置。

比如下面的例子,虽然给TextBox设置了VerticalContentAlignment="Bottom",但其仍然位于上部。不过,在另外一个方向,还是可以用 HorizontalAlignment来调整的。

 

        <StackPanel Background="AliceBlue" Margin="10" Grid.Row="0" Width="400">
            <TextBox Background="LightCoral" HorizontalAlignment="Right" VerticalAlignment="Bottom" Height="50" 
                     VerticalContentAlignment="Bottom" Text="Textbox" Width="200" 
                     HorizontalContentAlignment="Center" Margin="5"/>
        </StackPanel>

(2)DockPanel中放置的元素:

当没有设置DockPanel子元素的尺寸的时候,则会完全按照DockPanel的“紧凑排列与填充规则”来执行。比如下面的代码:

        <DockPanel Background="AliceBlue" Margin="10" Grid.Row="0" Width="400">
            <TextBox Background="LightCoral" HorizontalAlignment="Right" VerticalAlignment="Bottom" 
                     VerticalContentAlignment="Bottom" Text="Textbox"  
                     HorizontalContentAlignment="Center" Margin="5"/>
        </DockPanel>

显示如下,即TextBox填充了DockPanel的内部控件(Margin=30):

当设置了HorizontalAlignment或VerticalAlignment时,就不会填充,而是根据TextBox内部文字的大小紧凑排列。代码和显示如下所示:

        <DockPanel Background="AliceBlue" Margin="10" Grid.Row="0" Width="400">
            <TextBox Margin="30" Background="LightCoral" 
                     HorizontalAlignment="Right" VerticalAlignment="Bottom"
                     VerticalContentAlignment="Bottom" Text="Textbox"  
                     HorizontalContentAlignment="Center" />
        </DockPanel>

 

 

 

 

  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF中,可以使用TextBlock控件来显示文本,并使文本居中显示。TextBlock控件本身没有VerticalContentAlignment属性,因为它会根据文字的高度自动调整控件的高度与宽度,并默认居中显示。所以,只要将TextBlock放置在整个布局容器中垂直居中,文字就会自动居中显示。例如,可以使用Grid布局容器将TextBlock放置在中心位置,如下所示: ```xaml <Grid Background="Beige"> <TextBlock FontSize="36" HorizontalAlignment="Center" VerticalAlignment="Center" Text="这里显示文本输出"></TextBlock> </Grid> ``` 这样,TextBlock中的文本就会在水平和垂直方向上都居中显示。相比之下,TextBox控件可以使用HorizontalContentAlignmentVerticalContentAlignment属性来实现文本的居中显示。例如,可以设置TextBox的HorizontalContentAlignmentVerticalContentAlignment属性为Center,如下所示: ```xaml <TextBox FontSize="36" Width="400" Height="100" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Text="这里显示文本输出"></TextBox> ``` 这样,TextBox中的文本也会在水平和垂直方向上都居中显示。 #### 引用[.reference_title] - *1* *2* *3* [VS编程,WPF中,关于TextBlock与TextBox 控件文本垂直居中或者水平居中的说明](https://blog.csdn.net/qq_43307934/article/details/82969733)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值