WPF XAML 面板大小

4

我相信这个问题一定有简单的解释,但是我似乎找不到它。从下面的代码来看,为什么我的文本框会超出窗口范围?我认为如果将它们的宽度设置为窗口大小,它们应该可以完美对齐...然而运行时却明显不是这种情况。我错过了什么?设置宽度的正确方法是什么?

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="300" Width="200">
    <StackPanel Orientation="Horizontal">
        <TextBox Width="100">Hello</TextBox>
        <TextBox Width="100" TextAlignment="Right">World</TextBox>
    </StackPanel>
</Window>
1个回答

2

窗口的宽度包括边框,高度包括标题栏。因此,在设置宽度/高度时需要考虑到这些因素。您可以在窗口上使用 SizeToContent 选项,使其大小适合于文本框。

例如:

<Window ... SizeToContent="Width"

或者你可以用Grid替换StackPanel,使每个文本框占据窗口可用宽度的一半:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <TextBox Grid.Column="0">Hello</TextBox>
    <TextBox Grid.Column="1" TextAlignment="Right">World</TextBox>
</Grid>

那么,如果您想保持控件的大小,我是否正确地假设最好设置最小宽度和高度?如果该控件被放置在主窗口中,则主窗口应该只设置SizeToContent="WidthAndHeight"吗? - poco
@poco - 这要看情况 :-) 你可以使用Grid并在ColumnDefinitions或TextBoxes上设置MinWidth,并且使用SizeToContent选项。但这取决于你想要的布局类型。 - CodeNaked

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接