如何在窗口调整大小时使文本框调整大小

use*_*949 13 wpf

是否设置了根据窗口大小调整文本框大小的属性?

Jos*_*osh 21

WPF中的布局受父容器的严重影响.例如,如果要创建包含标签和输入字段的表单,请考虑使用"网格"面板.默认情况下,WPF中的控件根据其父级的布局行为调整大小.下面是一个窗口示例,其中包含两个带标签的文本框和两个随窗口一起调整大小的按钮.

<Window>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Label Content="Contact Name" Grid.Row="0" Grid.Column="0" />
        <TextBox Grid.Row="0" Grid.Column="1" />

        <Label Content="Contact Location" Grid.Row="1" Grid.Column="0" />
        <TextBox Grid.Row="1" Grid.Column="1" />

        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right"
                    VerticalAlignment="Bottom" Grid.Row="2" Grid.Column="1">
            <Button Content="OK" Width="75" Height="24" Margin="3" />
            <Button Content="Cancel" Width="75" Height="24" Margin="3" />
        </StackPanel>

    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要类似于浏览器的地址栏布局,您可以执行以下操作:

<Window>
    <DockPanel>
        <DockPanel DockPanel.Dock="Top">
            <Button Content="Back" DockPanel.Dock="Left" />
            <Button Content="Forward" DockPanel.Dock="Left" />
            <Button Content="Refresh" DockPanel.Dock="Right" />
            <TextBox /> <!-- fill is assumed for last child -->
        <DockPanel>
        <StatusBar DockPanel.Dock="Bottom" />
        <WebBrowser /> <!-- fill is assumed for last child -->
    </DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

请注意,在上面的示例中,我嵌套了两个DockPanel.它也可以通过网格实现,但标记会更加混乱.如果您是WPF新手,我强烈建议您使用各种面板.一旦您了解何时将特定面板应用于特定布局,就可以更轻松地使用WPF.