【问题标题】:wpf xaml panel sizewpf xaml 面板大小
【发布时间】:2011-08-04 07:17:45
【问题描述】:

我确信有一个简单的解释为什么会发生这种情况,但似乎找不到。从下面的代码中,为什么我的文本框会延伸到窗口之外?我想,因为我已经将它们的宽度设置为等于它们可以完美对齐的窗口的大小......但是运行它,显然不是这样。我错过了什么?设置宽度的正确方法是什么?

<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>

【问题讨论】:

    标签: wpf xaml stackpanel


    【解决方案1】:

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

    喜欢:

    <Window ... SizeToContent="Width"
    

    或者您可以用 Grid 替换您的 StackPanel,以使每个 TextBox 为窗口可用宽度的一半:

    <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 - 这真的取决于 :-) 您当然可以使用 Grid 并在 ColumnDefinitions 或 TextBoxes 上设置 MinWidth 使用 SizeToContent 选项。但这取决于您要使用的布局类型。
    猜你喜欢
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多